\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{graphicx}
\usepackage{vmumath}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{avo_book}
\usepackage{caption}
\usepackage{subcaption}
\usepackage[a4paper,left=15mm,right=15mm,top=30mm,bottom=20mm]{geometry}
\parindent=0mm
\parskip=3mm
\noaftermath
\pagestyle{empty}



\begin{document}

\bibliographystyle{unsrt}

\begin{center}
\LARGE Элементы теории графов
\end{center}

\section{Основные понятия и определения}

\myitem Начнем данный параграф с определения графов, основных обозначений и самых базовых фактов из теории графов. 

\mysubitem Формальное и достаточно общее определение неориентированного графа таково.

\begin{defin} \emph{Неориентированным графом} $G$ называется тройка
$$
G=(V,E,I),
$$
состоящая из
\begin{description}
\item[(1)] (конечного) множества вершин $V=V(G)$, например, 
$$
V=\{1,2,3,4\},
$$
\item[(2)] (конечного) множества ребер $E=E(G)$, например,
$$
E=\{a,b,c,d,e,f,g,h\},
$$
\item[(3)] а также отображения $I\colon E\to V_2$, сопоставляющего любому ребру $e\in E$ неупорядоченную пару вершин $\{x,y\}\in V_2$, которую это ребро соединяет. 
\end{description}

Вершины $x$ и $y$ называются \emph{концевыми вершинами} ребра $e$. При этом говорят, что ребро $e$ \emph{инцидентно} своим концевым вершинам. 

В принципе, возможен случай $x=y$. Ребро $e\in E$, соответствующее паре $\{x,x\}$, называется обычно \emph{петлей.}
\end{defin}


\begin{figure}[h]
\centering
\includegraphics[scale=1.0]{pics/first_example.eps}
\caption{Пример графа на четырех вершинах}
\label{fig:ex_graph}
\end{figure}

\begin{examp} \label{examp:gr_1} Зададим отображение $I$ в виде следующей таблицы:
$$
\begin{array}{|c|c|c|c|c|c|c|c|c|}
\hline
E & a & b & c & d & e & f & g & h \\
\hline
V_2 & \{1,3\} & \{2,4\} & \{1,3\} & \{3,4\} & \{3,4\} & \{1,2\} & \{3,4\} & \{2,2\} \\
\hline
\end{array}
$$
Ей соответствует граф $G$, изображенный на рис.\ref{fig:ex_graph}. 
\end{examp}


\mysubitem С понятием инцидентности тесно связано важное понятие степени вершины графа $G$. 

\begin{defin} В неориентированном графе $G$ \emph{степенью} $\deg(x)$ или \emph{валентностью} вершины $x$ называется количество ребер, инцидентных $x$. Считается, что петля дает вклад, равный двум, в степень любой вершины. Вершина, степень которой равна нулю, называется \emph{изолированной.} Если все вершины в графе $G$ имеют одинаковую степень, то граф $G$ называют \emph{регулярным.}
\end{defin}

Следующее утверждение часто называют первой теоремой теории графов. 

\begin{theor} 
\label{theor:first_th_gr} 
В неориентированном графе $G$ сумма степеней всех вершин равна удвоенному количеству всех ребер графа:
\begin{equation}
\label{eq:sum_deg_vertices}
\sum\limits_{x\in V(G)}\deg(x)=2|E(G)|.
\end{equation}
\end{theor}

\evids практически очевидно --- любое ребро дает вклад, равный двум, в стоящую слева сумму.

\begin{conseq} \label{conseq:odd_deg} 
Количество вершин в графе $G$, имеющих нечетную степень, четно. 
\end{conseq}



\mysubitem Чаще всего на практике встречаются так называемые простые графы.

\begin{defin} Граф $G$ называется \emph{простым,} если он не содержит 
\begin{description}
\item[(1)] петель,
\item[(2)] кратных ребер (или мультиребер), то есть различных ребер, инцидентных одной и той же паре вершин.
\end{description}
Граф, не являющийся простым, часто называют \emph{мультиграфом.}
\end{defin}

Любой простой граф $G$, построенный на $n$ вершинах, допускает и несколько более простое описание. Именно, его можно рассматривать как некоторое подмножество $G$ множества $V^{(2)}$ всех двухэлементных подмножеств множества $V(G)$ его вершин: 
$$
G\subseteq V^{(2)}.
$$
Иными словами, простой граф --- это граф, построенный на $n$ вершинах, любая пара которых может быть соединена или не соединена ребром. 

В частности, всему множеству $V^{(2)}$ двухэлементных подмножеств множества $n$ вершин соответствует так называемый \emph{полный} граф $K_n$ --- граф, в котором любая вершина соединена со всеми оставшимися вершинами графа. Пустому подмножеству множества $V^{(2)}$ отвечает так называемый \emph{пустой} граф, то есть граф, состоящий из $n$ изолированных вершин. 

Пустой граф является дополнением к полному графу $K_n$ (и обозначается он как $\bar K_n$) в смысле следующего определения.

\begin{defin}
Граф $\bar G$ называется \emph{дополнением} к графу $G$, если множества вершин этих двух графов совпадают, а множество ребер графа $\bar G$ дополняет множество ребер $E(G)$ исходного графа $G$ до полного графа $K_n$. 
\end{defin}


\mysubitem Наряду с неориентированными, в теории графов также изучаются и так называемые ориентированные графы (или орграфы).

\begin{defin} Если в тройке 
$$
D=(V,E,I)
$$
отображение $I$ ставит в соответствие любому ребру $e$ \emph{упорядоченную} пару вершин $(x,y)\in V\times V$, то такая тройка называется \emph{ориентированным} графом (или \emph{орграфом}). В таком случае говорят, что ребро $e$ \emph{выходит} из вершины $x$ и \emph{входит} в вершину $y$. На рисунке такое ребро помечается стрелкой, указывающей направление данного ребра.
\end{defin}

В орграфе различают исходящую и входящую степень любой вершины, а также просто степень, равную сумме входящей и исходящей степеней.

\begin{defin} Орграф $D$ называется \emph{простым,} если он не содержит 
\begin{description}
\item[(1)] петель;
\item[(2)] ребер с одинаковыми \emph{упорядоченными} парами вершин.
\end{description}
\end{defin}

\mysubitem Следующим важным понятием в теории графов является понятие смежности.

\begin{defin} Говорят, что вершина $y$ смежна с вершиной $x$, если в графе $G$ существует ребро $\{x,y\}$, а в орграфе $G$ --- ребро $(x,y)$.  
\end{defin}
Для неориентированного графа отношение смежности является симметричным. Для орграфа это не так: если существует ребро $(x,y)$ и не существует ребро $(y,x)$, то вершина $y$ смежна с вершиной $x$, а вот $x$ вершиной, смежной с $y$, уже не является. Вершина $x$ будет смежной с $y$ только в случае, когда существует ребро $(y,x)$.

Для хранения графа в памяти компьютера как правило используются две структуры, тесно связанные с понятием смежности --- матрица смежности и список смежности.

Матрица смежности --- это матрица $M_a$ размерами $n\times n$, любой элемент $a_{ij}$ которой описывает количество ребер, идущих из вершины $i$ в вершину $j$. Так, для примера \ref{examp:gr_1} соответствующая графу $G$ матрица смежности имеет следующий вид:
$$
M_a=\begin{bmatrix}
0 & 1 & 2 & 0 \\
1 & 1 & 0 & 1 \\
2 & 0 & 0 & 3 \\
0 & 1 & 3 & 0
\end{bmatrix}
$$
Заметим, что для неориентированного графа матрица смежности всегда симметрична. 

В случае простого графа или орграфа все диагональные элементы $a_{ii}=0$, а элементы, не лежащие на диагонали, равны 
$$
a_{ij}=\left\{\begin{array}{l}
1,\quad \text{если существует ребро, идущее из вершины $i$ в вершину $j$;}\\[1ex]
0,\quad \text{если такого ребра не существует.}
\end{array}\right.
$$

Список смежности --- это линейный массив $L_a$ размера $n$, каждый элемент $a_i$ которого содержит список (мультимножество) вершин, смежных с вершиной $i$. Для примера \ref{examp:gr_1} соответствующий список имеет следующий вид:
$$
\begin{array}{lll}
1  & \text{смежна с}  &  2,3,3 \\
2  & \text{смежна с}  &  1,2,4 \\
3  & \text{смежна с}  &  1,1,4,4,4 \\  
4  & \text{смежна с}  &  2,3,3,3
\end{array}
$$

\myitem Теперь постараемся ответить на вопрос, сколько же существует различных графов, построенных на $n$ вершинах. 

\mysubitem Начнем с задачи подсчета количества $g_n$ простых неориентированных графов. Это количество достаточно легко сосчитать, используя определение простого графа как некоторого подмножества множества $V^{(2)}$. Действительно, количество всех двухэлементных подмножеств $n$-элементного множества вершин (то есть мощность множества $V^{(2)}$) равно $|V^{(2)}|=\BCf{n}{2}$. Нас же интересует множество $\Sigma$ всех подмножеств $V^{(2)}$. Количество элементов в этом множестве, как известно, равно 
$$
|\Sigma|=2^{|V^{(2)}|}=2^{\BCf{n}{2}}.
$$
Следовательно, количество $g_n$ всех простых графов на $n$ вершинах равняется $2^{\BCf{n}{2}}$. 

\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{pics/eight_graphs.eps}
\caption{Восемь простых графах на трех вершинах}
\label{fig:eight_graphs}
\end{figure}


Например, существует ровно $g_3=8$ различных простых графов, построенных на трех вершинах (смотри рис.\ref{fig:eight_graphs}).

\mysubitem Столь же просто подсчитать количество различных простых орграфов. Действительно, всего существует $n(n-1)$ упорядоченных пар отличных друг от друга вершин. Как следствие, количество различных простых орграфов, построенных на $n$ вершинах, равно $2^{n(n-1)}$.

\mysubitem Заметим, что многие из приведенных на рис.\ref{fig:eight_graphs} графов похожи друг на друга в том смысле, что отличаются они друг от друга только перенумерацией вершин. Формализовать эту похожесть можно с помощью понятия изоморфизма графов. 

\begin{defin} Говорят, что два простых графа $G_1$ и $G_2$ \emph{изоморфны} друг другу, если существует взаимно-однозначное отображение $\phi\colon V_1(G_1)\to V_2(G_2)$, такое, что если в графе $G_1$ некоторая пара вершин $\{x,y\}$ соединена ребром, то в графе $G_2$ соответствующая ей пара вершин $\{\phi(x),\phi(y)\}$ также соединена ребром, и наоборот.
\end{defin}

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/isomorphs.eps}
\caption{Два изоморфных графа}
\label{fig:isomorphs}
\end{figure}


\begin{examp}\label{examp:isom_graph}
Рассмотрим графы $G_1$ и $G_2$, изображенные на рис.\ref{fig:isomorphs}. Они изоморфны друг другу, так как существует отображение $\phi\colon \{1,2,3\}\to \{1,2,3\}$ вида
$$
\phi(1)=1,\qquad \phi(2)=3,\qquad \phi(3)=2,
$$
при котором ребро $\{1,2\}$ графа $G$ переходит в ребро $\{\phi(1),\phi(2)\}=\{1,3\}$, а ребро $\{2,3\}$ графа $G$ переходит в ребро $\{\phi(2),\phi(3)\}=\{3,2\}$ графа $G_2$. 
\end{examp}

\mysubitem Как и любой изоморфизм, изоморфизм графов вводит отношение эквивалентности на множестве всех простых графов на $n$ вершинах. Отношение эквивалентности, в свою очередь, разбивает все множество таких графов на классы эквивалентности --- классы изоморфных друг другу графов. 

\begin{defin} Графы, рассматриваемые с точностью до изоморфизма, называются \emph{непомеченными} графами. В этом смысле обычные простые графы часто называются \emph{помеченными} графами. 
\end{defin}

Так, из рис.\ref{fig:eight_graphs} видно, что существует только лишь четыре различных непомеченных графа на трех вершинах. Задача перечисления непомеченных графов на $n$ вершинах для произвольного значения параметра $n$ является значительно более сложной задачей по сравнению с задачей перечисления соответствующих помеченных графов.  

\mysubitem Наряду с изоморфизмом, в теории графов вводится также понятие автоморфизма --- изоморфизма графа $G$ в себя.  

\begin{defin} Пусть $G$ --- простой граф. Взаимно-однозначное отображение $\phi: V(G)\to V(G)$ множества $V(G)$ вершин графа $G$ в себя называется автоморфизмом, если для любой смежной пары $\{x,y\}$ соответствующая ей пара $\{\phi(x),\phi(y)\}$ вершин также соединена ребром. 
\end{defin}

Видно, что это определение очень похоже на определение изоморфизма графов, и на первый взгляд не очень понятно, чем эти определения отличаются друг от друга. Казалось бы, отличие этих определений состоит в том, что в определении изоморфизма фигурируют различные множества $V_1(G_1)$ и $V_2(G_2)$ вершин, тогда как в определении автоморфизма эти множества совпадают. Однако это отличие в двух определениях абсолютно непринципиально. Как правило, вершины любого графа помечаются элементами одного и того же множества $[n]=\{1,2,\ldots,n\}$ первых $n$ натуральных чисел, так что и в определении изоморфизма, и в определении автоморфизма в роли отображения $\phi$ обычно выступает какая-то перестановка $\sigma\colon [n]\to [n]$ первых $n$ натуральных чисел. Ровно эту ситуацию мы наблюдали в примере \ref{examp:isom_graph}: там в качестве отображения $\phi$ выступала, по сути, перестановка $\sigma=(1)(23)$ первых трех натуральных чисел. 

Ключевое же отличие этих двух определений заключается в следующем: в определении автоморфизма мы в результате отображения $\phi$ получаем \emph{тот же самый} граф $G$, тогда как в случае изоморфизма, не являющегося автоморфизмом, граф $G_1$ под действием отображения $\phi$ переходит в некоторый \emph{другой} граф $G_2$, отличный от исходного графа $G_1$, причем это верно даже в том случае, когда множества $V_1(G_1)$ и $V_2(G_2)$ вершин этих двух графов совпадают. Легче всего это отличие описать в терминах матрицы или списка смежности графов: в случае автоморфизма список смежности графа $G$ не изменится, тогда как в результате действия изоморфизма списки смежности графов $G_1$ и $G_2$ будут, вообще говоря, отличаться друг от друга. 

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/isomorphs_2.eps}
\caption{Два равных графа}
\label{fig:equal_graphs}
\end{figure}



\begin{examp}\label{examp:autom_graph}
Рассмотрим наряду с графами из примера \ref{examp:isom_graph} пару графов $G_1,$ $G_3$ на трех вершинах, изображенных на рис.\ref{fig:equal_graphs}. Видно, что по сути дела это есть один и тот же помеченный граф: если мы развернем граф $G_3$ на $180^\circ$ и наложим его на граф $G_1$, то эти графы совпадут. Формально же нам следует рассмотреть отображение $\phi_a\colon \{1,2,3\}\to \{1,2,3\}$ вида
$$
\phi_a(1)=3,\qquad \phi_a(2)=2,\qquad \phi_a(3)=1,
$$
при котором ребро $\{1,2\}$ графа $G_1$ переходит в ребро $\{\phi_a(1),\phi_a(2)\}=\{3,2\}$, а ребро $\{2,3\}$ --- в ребро $\{\phi_a(2),\phi_a(3)\}=\{2,3\}$ графа $G_3$. На первый взгляд, это отображение очень похоже на рассмотренное в примере \ref{examp:isom_graph} взаимно-однозначное отображение $\phi$. Для того, чтобы понять различие двух этих отображений, рассмотрим списки смежности графов $G_1$ и $G_2$ из примера \ref{examp:isom_graph}, а также списки смежности графов $G_1$ и $G_3$ из рассматриваемого примера. Для графов $G_1$ и $G_3$ эти списки совпадают и имеют вид
$$
\begin{array}{ll}
1  & \text{смежна с}\,\,2, \\
2  & \text{смежна с}\,\,1\,\,\text{и}\,\,3, \\
3  & \text{смежна с}\,\, 2.
\end{array}
$$ 
Следовательно, отображение $\phi_a$ задает автоморфизм графа $G_1$ в себя. Список же смежности графа $G_2$ записывается в виде
$$
\begin{array}{ll}
1  & \text{смежна с}\,\,3, \\
2  & \text{смежна с}\,\,3, \\
3  & \text{смежна с}\,\,1\,\,\text{и}\,\,2,
\end{array}
$$
то есть отличается от списка смежности графа $G_1$. Следовательно, отображение $\phi$ из примера \ref{examp:isom_graph} задает изоморфизм графа $G_1$ в некоторый другой, отличный от $G_1$, помеченный граф $G_2$.  
\end{examp}


\mysubitem Несложно убедиться в том, что множество всех автоморфизмов графа $G$ вместе с операцией композиции таких отображений образуют группу. Эта группа называется \emph{группой автоморфизмов} графа $G$ и обозначается $\Aut(G)$. Например, граф $G_1$ из примеров \ref{examp:isom_graph} и \ref{examp:autom_graph} допускает два автоморфизма --- тождественный автоморфизм и автоморфизм $\phi_a$, описанный в примере \ref{examp:autom_graph}. Следовательно, группа автоморфизмов $\Aut(G_1)$ графа $G_1$ состоит из двух элементов. 

Граф, группа автоморфизмов которого состоит из единственного, тождественного элемента, называется \emph{асимметричным} графом. Проверка того, имеет ли какой-то наперед заданный граф $G$ нетривиальный автоморфизм, является, вообще говоря, весьма нетривиальной задачей. Хотя $NP$-полнота такой задачи и не доказана, эффективных алгоритмов ее решения пока не существует. 


\mysubitem Как мы уже убедились выше, графы удобно представлять в виде рисунков на плоскости. Для изображения непомеченного графа достаточно выбрать на плоскости $n$ различных точек и соединить любую пару таких точек отрезком или некоторой кривой в случае, если соответствующие этим точкам вершины графа являются смежными. В случае помеченного графа $G$ нам следует еще пометить нарисованные точки элементами множества $V(G)$ вершин графа $G$. 

Очевидно, что для любого фиксированного изображения непомеченного графа на плоскости существует $n!$ способов пометить его вершины числами множества $[n]$. Получающиеся в результате такого процесса помеченные графы не обязательно являются различными.   

\begin{figure}[h]
\centering

\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/unlabelled.eps}
 	\caption{Непомеченный граф $\tilde{G}$ \\ \phantom{hidden}}
	\end{subfigure}

\\
\\
	\begin{subfigure}[b]{0.9\textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/labellings.eps}
 	\caption{Помеченные графы}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:labellings}
\end{figure}


\begin{examp}\label{examp:six_lin_graphs}
На рис.\ref{fig:labellings},a изображен граф $\tilde{G}$, представляющий собой цепочку из трех вершин. Существует $3!=6$ способов пометить его вершины числами множества $[3]=\{1,2,3\}$. Соответствующие этим шести способам графы показаны на рис.\ref{fig:labellings},b. Как мы уже знаем из примера \ref{examp:autom_graph}, графам $G_1$ и $G_3$ отвечает один и тот же помеченный граф. С формальной точки зрения это означает, что существует перестановка $\sigma=(13)(2)$ вершин, переводящая помеченный граф $G_1$ в себя. Тот же факт верен в отношении графов $G_2$ и  $G_6$, а также в отношении графов $G_4$ и $G_5$. Следовательно, одному изображенному на рис.\ref{fig:labellings},a  непомеченному графу $\tilde{G}$ отвечают три различных помеченных графа --- например, графы $G_1$, $G_2$ и $G_5$ на рис.\ref{fig:labellings},b. 
\end{examp}

Заметим теперь, что группы автоморфизмов графов $G_1$, $G_2$ и $G_5$, хотя и состоят из различных перестановок вершин, изоморфны одной и той же группе $S_2$ перестановок двух элементов. Эта группа отражает внутреннюю симметрию исходного непомеченного графа $\tilde{G}$, и потому называется обычно \emph{группой симметрии} $\Aut(\tilde{G})$ такого графа. Можно показать, что аналогичный факт имеет место для любого непомеченного графа $\tilde{G}$. 

Как следствие, количество $l(G)$ всех различных помеченных графов, отвечающих одному и тому же графу $\tilde{G}$, умноженное на порядок $|\Aut(\tilde{G})|$ этой группы, совпадает с общим количеством способов разметить вершины графа $\tilde{G}$ числами множества $[n]$, равным $n!$. Отсюда получаем простую формулу для подсчета количества всех различных помеченных графов, получаемых из заданного непомеченного графа $\tilde{G}$:
$$
l(G)=\dfrac{n!}{|\Aut(\tilde{G})|}.
$$


\mysubitem Один и тот же непомеченный граф может быть по-разному нарисован на плоскости. При небольших значениях параметра $n$ довольно легко сообразить, соответствуют ли два таких рисунка одному и тому же графу $\tilde{G}$ или нет. 

\begin{figure}[h]
\centering

\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.48\textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/est_isomorphs_1.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.48\textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/est_isomorphs_2.eps}
 	\caption{}
	\end{subfigure}
\end{tabular}
\caption{Установление изоморфизма между графами}
\label{fig:est_isomorphs}
\end{figure}


\begin{examp}
Рассмотрим два графа, изображенных на рис.\ref{fig:est_isomorphs},a. Довольно очевидно, что они представляют собой изображение одного и того же графа $\tilde{G}$. Доказать же это можно, пометив их вершины так, как показано на рис.\ref{fig:est_isomorphs},b.  Соответствующие этим помеченным графам списки смежности совпадают и имеют вид
$$
\begin{array}{ll}
1  & \text{смежна с}\,\,\text{$2$, $3$ и $5$,} \\
2  & \text{смежна с}\,\,\text{$1$, $4$ и $5$,} \\
3  & \text{смежна с}\,\, 1,\\
4  & \text{смежна с}\,\, 2,\\
5  & \text{смежна с}\,\,\text{$1$ и $2$.}
\end{array}
$$
\end{examp}



\begin{examp}
Рассмотрим теперь графы, показанные на рис.\ref{fig:est_isomorphs_2},a. Для таких графов уже не вполне очевидно то, что они изображают один и тот же непомеченный граф. Для доказательства этого факта можно, например, попытаться разметить вершины двух графов так, чтобы пара вершин $\{x,y\}$, связанная ребром в графе $G_1$, оказалась бы связанной ребром и в графе $G_2$, и наоборот. В данном примере это можно все же сделать достаточно просто, заметив, что граф $G_2$ состоит из двух непересекающихся циклов длины $4$. Соответственно, выделив в графе $G_1$ замкнутый цикл аналогичной длины, мы можем  уже однозначно пометить оставшиеся вершины графа $G_1$ так, чтобы списки инцидентности этих графов совпали (смотри рис.\ref{fig:est_isomorphs_2},b).
\end{examp}


\begin{figure}[h]
\centering

\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.48\textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/est_isomorphs_3.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.48\textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/est_isomorphs_4.eps}
 	\caption{}
	\end{subfigure}
\end{tabular}
\caption{Установление изоморфизма между графами}
\label{fig:est_isomorphs_2}
\end{figure}


В практических задачах довольно часто встречаются графы, в которых содержатся сотни тысяч вершин. Для таких графов никакие визуальные методы оценки уже не работают. В таких случаях следует более-менее произвольно пронумеровать вершины сравниваемых графов и попытаться применить какой-то специальный алгоритм, позволяющий за разумное время проверить изоморфизм получившихся помеченных графов. Основная проблема здесь заключается в том, что, подобно задаче поиска нетривиальных автоморфизмов графа, задача проверки пары графов на изоморфизм весьма сложна, и эффективных алгоритмов ее решения все еще не существует. 



\myitem Вернемся к основным определениям теории графов. 

\begin{defin} \emph{Подграфом} графа $G$ называется граф $H$, такой, что $V(H)\subset V(G)$ и $E(H)\subset E(G)$, и концевые вершины любого ребра в $H$ совпадают с концевыми вершинами того же ребра в $G$ (смотри рис.\ref{fig:subgraphs},a,b). 
\end{defin}

Отметим два важных частных случая этого определения. 

\begin{figure}[h]
\centering

\begin{tabular}[t]{cc}

\\
	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/subgraphs_1.eps}
 	\caption{Исходный граф $G$}
	\end{subfigure}

&


	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/subgraphs_2.eps}
 	\caption{Произвольный подграф $H$ графа $G$}
	\end{subfigure}

\\
\\
\\
	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/subgraphs_3.eps}
 	\caption{Остовный подграф графа $G$ \\ \phantom{hidden} }
	\end{subfigure}


&
	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/subgraphs_4.eps}
 	\caption{Подграф $H$ графа $G$, индуцированный множеством вершин $\{a,b,d,e,f\}$}
	\end{subfigure}
\end{tabular}
\caption{Пример графа и его подграфов}
\label{fig:subgraphs}
\end{figure}


\begin{defin}
\emph{Остовным} подграфом (spanning subgraph) графа $G$ называется такой подграф $H$, множество вершин $V(H)$ которого совпадает с множеством $V(G)$ вершин исходного графа $G$ (смотри рис.\ref{fig:subgraphs},c).  
\end{defin}

\begin{defin}
Подграфом графа $G$, \emph{индуцированным подмножеством вершин $S$ графа $G$,} называется граф $H$, получающийся удалением всех вершин графа $G$, не принадлежащих множеству $S$, вместе со всеми инцидентными этим вершинам ребрами (смотри рис.\ref{fig:subgraphs},d).
\end{defin}

По сути, в данном выше определении мы использовали операцию удаления вершины $x$. Эта операция заключается в удалении из $G$ как самой вершины $x$, так и всех инцидентных ей ребер. Получающийся в результате данной операции граф обозначается обычно через $G-x$. В более общем случае $S\in V(G)$ получаем граф $G-S$, в котором удалены все вершины подмножества $S$ вместе со всеми ребрами, инцидентными этим вершинам.  

Полезно для дальнейшего ввести также операцию удаления ребра $e$ --- при такой операции количество вершин в графе $G-e$ не меняется, а количество ребер уменьшается на единицу. Аналогично, в случае $F\subset E(G)$ граф $G-F$ есть граф, получающийся из исходного графа $G$ удалением всех ребер из подмножества $F$. 



\myitem Перейдем, наконец, к важному понятию связных графов и орграфов.

\mysubitem Начнем с определения маршрутов, циклов и путей. 

\begin{defin} \emph{Маршрутом} (walk) в графе $G$ из вершины $x_0$ в вершину $x_k$ называется чередующаяся последовательность
$$
x_0,e_1,x_1,e_2,x_2,\ldots,x_{k-1},e_k,x_k
$$
вершин $x_i\in V$ (не обязательно различных) и ребер $e_i\in E$, соединяющих точки $x_{i-1}$ и $x_i$. Говорят, что такой маршрут имеет \emph{длину} $k$. Маршрут называется замкнутым, если $x_0=x_k$.  
\end{defin}

В случае простого графа любой маршрут полностью определяется последовательностью
$$
x_0,x_1,x_2,\ldots,x_{k-1},x_k,
$$
вершин $x_i\in V(G)$, любые два последовательных элемента $x_{i-1}$, $x_{i}$ которой являются смежными вершинами (т.е. соединены между собой ребром $e_i=\{x_{i-1},x_i\}\in E(G)$).

\begin{defin}
Если все ребра $e_1,\ldots,e_k$ в маршруте различны, то такой маршрут называется \emph{путем} (path) из вершины $x_0$ в вершину $x_k$. Если также и все вершины в данном пути различны, то такой путь называется  \emph{простым.} 
\end{defin}

\begin{defin} 
В случае, когда $x_0=x_k$, путь называется \emph{циклом.} Путь называется  \emph{простым циклом} в случае, когда в нем совпадают только вершины $x_0$ и $x_k$. 
\end{defin}

\begin{defin}
Количество ребер в пути (цикла) называется длиной пути (цикла).
\end{defin}


\mysubitem Теперь мы готовы определить понятие связных графов. 

\begin{defin} Если вершины $x,y\in V$ графа $G$ соединены хотя бы одним путем, то такие вершины называются \emph{связанными.} 
\end{defin}

Несложно проверить, что связанность задает на множестве $V$ вершин графа $G$ отношение эквивалентности. Это отношение делит граф на классы эквивалентности, называющиеся \emph{компонентами связности графа.} 

\begin{defin}
В случае, когда в графе $G$ существует лишь одна компонента связности, то есть в случае, когда любые две вершины $x,y$ графа соединены хотя бы одним путем, граф называется \emph{связным.} В противном случае граф называется \emph{несвязным.}
\end{defin}

\mysubitem С понятием пути в графе тесно связаны и такие важные понятия, как расстояние между вершинами в графе, эксцентриситет вершины, диаметр и радиус графа. 

\begin{defin}
\emph{Расстоянием} $d(x,y)$ между двумя связанными вершинами $x,y\in V(G)$ называется длина наименьшего пути между ними. 
\end{defin}

Понятно, что такой путь обязательно является простым. В случае, когда вершины не являются связанными, полагают по определению, что $d(x,y)=\infty$. 

\begin{defin}
\emph{Диаметром} графа называется максимальное расстояние между его вершинами: 
$$
\diam(G):=\max\limits_{x,y\in V(G)}d(x,y).
$$
\end{defin}
В случае несвязного графа считается, что $\diam(G)=\infty$. 

\begin{defin}
\emph{Эксцентриситетом} $\epsilon(x)$ вершины $x\in V(G)$ называется максимальное расстояние от $x$ до любой другой вершины графа $G$:
$$
\epsilon(x):=\max\limits_{y\in V(G)}d(x,y).
$$
\end{defin}

\begin{defin}
\emph{Радиусом} $r(G)$ графа $G$ называется минимальный из эксцентриситетов вершин графа $G$. Вершины, на которых этот минимум достигается, называются \emph{центральными вершинами} графа $G$. Множество всех центральных вершин называется \emph{центром} графа. 
\end{defin}

Некоторые несложные факты, связанные с введенными выше понятиями, приведены в упражнениях \ref{exerc:rad_diam} и \ref{exerc:diam_G_barG}. 


\mysubitem Понятие связности в орграфе несколько сложнее, чем в неориентированном графе.

\begin{defin}
Вершины $x$ и $y$ орграфа $D$ называются \emph{связанными,} если в $D$ существуют хотя бы один путь из $x$ в $y$ и хотя бы один путь из $y$ в $x$. 
\end{defin}

\begin{defin}
Орграф $D$ называется \emph{сильно связным,} если любые две его вершины являются связанными. 
\end{defin}

Иногда наряду с этим понятием для орграфа вводят понятие слабой связности.

\begin{defin}
Орграф $D$ называется \emph{слабо связным,} если соответствующий ему неориентированный граф $G$, получающийся заменой всех ориентированных ребер на неориентированные, является связным. 
\end{defin}

\mysubitem Как и в случае неориентированного графа, в орграфе $D$ отношение связанности является отношением эквивалентности. Как следствие, множество всех вершин $V(D)$ орграфа $D$ разбивается с помощью этого отношения эквивалентности на классы попарно связанных вершин, которые называются \emph{компонентами сильной связности.} 

Сразу заметим, что в неориентированном графе между различными компонентами связности ребер не существует. В орграфе такие ребра могут существовать, однако направлены все они будут лишь от одной компоненты связности к другой. Именно, справедливо следующее достаточно очевидное утверждение.

\begin{lemm}
Пусть $H_1,H_2$ есть две различные компоненты сильной связности графа $D$, и пусть существует ребро $e\in E(D)$ из $H_1$ в $H_2$. Тогда ребра из $H_2$ в $H_1$ отсутствуют.
\end{lemm}

\evidp Действительно, если ребро из $H_2$ в $H_1$ существует, то любые две вершины в множестве $H_1\cup H_2$ вершин оказываются связанными. Иными словами, $H_1\cup H_2$ представляет собой компоненту сильной связности графа $D$, что противоречит предположению о том, что $H_1$ и $H_2$ есть две различные компоненты сильной связности. \qed

Как следствие, по любому орграфу $D$ можно построить так называемый граф $C(D)$ компонент сильной связности графа $D$, вершинами которого будут компоненты сильной связности графа $D$, а ребрами --- ребра графа $D$, направленные из одной компоненты сильной связности $D$ к другой. Основное свойство такого орграфа $C(D)$ состоит в том, что в таком графе нет циклов.

\begin{theor}
В орграфе $C(D)$ циклы отсутствуют, то есть он, как еще говорят, представляет собой ациклический орграф (DAG --- directed acyclic graph).
\end{theor}

\evidp Если бы в таком графе существовал цикл вида $H_1\to H_2\to\ldots\to H_n\to H_1$, то любые две вершины в объединении $H_1\cup H_2\cup \ldots\cup H_k$ оказались бы связанными. Действительно, внутри каждой компоненты $H_i$ мы, по определению сильной связности, можем попасть из любой вершины в любую вершину $H_i$. Вершины же из разных компонент $H_i$ и $H_j$ мы также можем всегда связать с помощью пути, идущего из $H_i$ в $H_j$, а также пути, соединяющего компоненты $H_j$ и $H_i$.  \qed 

\begin{figure}[h]
\centering
\includegraphics[scale=0.8]{pics/graph_and_its_c(d).eps}
\caption{Орграф $D$ и граф компонент сильной связности графа $D$}
\label{fig:dirgraphs}
\end{figure}




\section*{Упражнения}

\begin{exerc} 
Доказать, что так называемый кубический граф, то есть граф, степени всех вершин которого равны трем, всегда имеет четное число вершин.
\end{exerc}

\begin{exerc} 
Доказать, что в любом графе существуют по крайней мере две вершины с одинаковыми степенями. 
\end{exerc}

\begin{exerc} 
Пусть $G$ есть регулярный связный граф, имеющий $22$ ребра. Сколько вершин может содержать данный граф? 
\end{exerc}

\begin{exerc} 
Пусть $G$ есть простой граф, построенный на $9$ вершинах. Предположим, что сумма степеней вершин графа $G$ равна как минимум $27$. Правда ли, что в таком графе обязательно существует вершина, степень которой больше или равна четырем? 
\end{exerc}

\begin{exerc} 
Пусть $A$ есть матрица смежности графа $G$. Показать, что элемент $a^k_{i,j}$ $k$-й степени матрицы $A$ определяет количество путей длины $k$ из вершины $i$ в вершину $j$. 
\end{exerc}

\begin{exerc} 
Описать все графы на $n$ вершинах, для которых  любая $n$-перестановка является автоморфизмом.
\end{exerc}

\begin{exerc} 
Найдите граф, неизоморфный квадрату $D_4$ (то есть графу, построенному на четырех вершинах, соединенных ребрами в один простой цикл), группа автоморфизмов которого совпадает с группой автоморфизма $\Aut(D_4)$. 
\end{exerc}

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/peterson_1.eps}
\caption{Граф Петерсена}
\label{fig:peterson}
\end{figure}

\begin{exerc} 
Доказать, что изображенные на рис.\ref{fig:peterson} графы соответствуют одному и тому же непомеченному графу --- так называемому графу Петерсена.  
\end{exerc}

\begin{exerc} 
Доказать, что в определении связанности двух вершин можно вместо понятия пути использовать как понятие маршрута, так и понятие простого пути.   
\end{exerc}

\begin{exerc} 
Пусть в графе $G$ ровно две вершины имеют четную степень. Доказать, что в они являются связанными.   
\end{exerc}


\begin{exerc} 
Доказать, что замкнутый маршрут нечётной длины обязательно содержит простой цикл.
\end{exerc}

\begin{exerc} 
Доказать или опровергнуть следующее утверждение: объединение двух различных маршрутов, соединяющих две вершины, содержит простой цикл.
\end{exerc}

\begin{exerc} 
Доказать или опровергнуть следующее утверждение: объединение двух различных {\em простых путей}, соединяющих две вершины, содержит простой цикл.
\end{exerc}


\begin{exerc} 
Доказать, что в связном графе два максимальных простых пути имеют общую вершину.
\end{exerc}

\begin{exerc} 
Доказать, что простой граф $G$, построенный на $10$ вершинах и имеющий $28$ ребер, содержит цикл длины $4$. 
\end{exerc}

\begin{exerc}\label{exerc:rad_diam}
Доказать, что радиус и диаметр графа связаны следующим образом:
$$
r(G)\leq \diam(G)\leq 2r(G).
$$
Привести примеры графов, на которых оба неравенства достигаются.
\end{exerc}

\begin{exerc}\label{exerc:diam_G_barG}
Доказать, что либо у графа, либо у его дополнения диаметр меньше или равен трем. В частности, один из этих графов обязательно является связным. 
\end{exerc}


\section*{Решение упражнений}

\begin{sol_exerc}
Действительно, согласно теореме \ref{theor:first_th_gr}, сумма степеней вершин равна удвоенному количеству ребер, то есть всегда равна некоторому четному числу. Но в кубическом графе
$$
\sum\limits_{x\in V(G)}\deg(x)=3\,|V|,
$$
поэтому количество $|V|$ вершин обязательно должно быть четным числом. Понятно, что аналогичный результат справедлив и для любых других $k$-регулярных графов, в которых $k\geq 3$ --- нечетное число.
\end{sol_exerc}

\begin{sol_exerc}
Предположим, что это не так. В этом случае для любого числа $i\in\{0,1,\ldots,n-1\}$ в графе $G$ найдется вершина $x_i$, степень которой равна $i$. В частности, это означает, что в графе существуют как изолированная вершина $x_0$ (то есть вершина степени $0$), так и вершина $x_{n-1}$ степени $(n-1)$. Последняя, по определению, должна быть соединена с любой другой вершиной графа $G$, в том числе и с вершиной $x_0$, что невозможно.  
\end{sol_exerc}

\begin{sol_exerc}
Да, это правда: мы знаем, что сумма степеней всех вершин графа есть четное число. Следовательно, сумма степеней графа $G$ больше или равна $28$. Но тогда обязательно должна существовать вершина, степень которой больше или равна $4$: в противном случае сумма степеней вершин будет меньше $28$.   
\end{sol_exerc}

\begin{sol_exerc}
В случае регулярного графа все вершины имеют одинаковую степень, равную $d$. Из теоремы \ref{theor:first_th_gr} следует, что в таком графе степень $d$, умноженная на количество $n$ вершин в графе, равна удвоенному количеству ребер в графе, то есть $d\cdot n=44$. Иными словами, $d$ есть делитель числа $44$, то есть принадлежит множеству чисел $\{1,2,4,11,22,44\}$. С другой стороны, $d$ не может превосходить величины $(n-1)$. Как следствие, множество возможных значений $d$ сужается и равно $\{1,2,4\}$. Случаи $d=2$ и $d=4$ возможны: первый случай отвечает простому циклу $C$, построенному на $22$-х вершинах, а второй --- отвечает графу, построенному на цикле $C$, каждая вершина которого соединена двумя дополнительными ребрами с вершинами, расположенными через одну вершину от нее. Случай же $d=1$ уже невозможен, так как в этом случае граф не является связным.   
\end{sol_exerc}

\begin{sol_exerc}
Данное утверждение можно доказать по индукции. База индукции $k=1$, очевидно, верна в силу определения матрицы смежности. Предположим теперь, что наше утверждение верно для некоторого $k\geq 1$, и покажем, что оно остается верным для $k+1$. Выберем для этого произвольную вершину $x$ графа $G$. Обозначим через $b_{i,z}$ количество путей из вершины $i$ в вершину $x$ длины $k$. По определению матрицы смежности $A$, ее элемент $a_{z,j}$ описывает количество ребер (то есть путей длины $1$) из $x$ в $j$. С учетом этих обозначений, количество всех путей из $i$ в $j$ длины $(k+1)$ можно сосчитать по формуле
$$
c_{i,j}=\sum\limits_{x\in G}b_{i,z}\cdot a_{z,j}.
$$
Согласно индукционному предположению, числа $b_{i,z}$ представляют собой элементы матрицы $B=A^k$. Поэтому $c_{i,j}$ представляет собой элемент матрицы $C=B\cdot A=A^k\cdot A=A^{(k+1)}$. 
\end{sol_exerc}

\begin{sol_exerc}
Достаточно очевидно, что полный граф $K_n$ и пустой граф $\bar{K}_n$ переходят в себя под действием любой перестановки вершин. Покажем, что никакой другой граф $G$ подобным свойством не обладает. Несложно убедиться, что в любом графе $G$, отличном от $K_n$ и $\bar{K}_n$, существует вершина $x$, степень которой отлична от $0$ и от $(n-1)$. У такой вершины обязательно существует хотя бы одна смежная с ней вершина $y$, а также хотя бы одна несмежная с ней вершина $z$. Осталось заметить, что перестановка, меняющая местами $y$ и $z$, автоморфизмом графа $G$ не является. 
\end{sol_exerc}

\begin{sol_exerc}
Очевидно, что таким графом является дополнение к исходному графу-квадрату. 
\end{sol_exerc}

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/peterson_2.eps}
\caption{}
\label{fig:peterson_2}
\end{figure}


\begin{sol_exerc}
Для доказательства можно, например, заметить, что граф, изображенный на левом рисунке, состоит из объединения двух непересекающихся циклов длины $5$. После этого уже достаточно легко найти аналогичные циклы в графе, отвечающем правому рисунку, а затем пометить вершины этих графов так, чтобы списки смежности этих двух графов совпадали (рис.\ref{fig:peterson_2}). 

Второй способ доказательства --- пометить вершины каждого графа $\BCf{5}{2}=10$-ю различными двухэлементными подмножествами множества $[5]=\{1,2,3,4,5\}$ так, чтобы соответствующие подмножества у смежных вершин не содержали одинаковых элементов. 
\end{sol_exerc}

\begin{sol_exerc}
Действительно, достаточно очевидно, что любой простой путь является в то же время обычным путем, а путь является в то же время и маршрутом. Предположим теперь, что две вершины $x$ и $y$ связаны между собой некоторым маршрутом. В нем могут быть участки, содержащие повторяющиеся ребра. Выкинув все такие участки, мы получим маршрут, соединяющий $x$ и $y$, в котором все ребра различны, то есть соединяющий $x$ и $y$ путь. Аналогично, выкидывая в любом пути участки, содержащие повторяющиеся вершины, мы получим соединяющий $x$ и $y$ простой путь.
\end{sol_exerc}

\begin{sol_exerc}
Обозначим через $x$ и $y$ вершины, имеющие нечетную степень. Пусть вершина $x$ принадлежит компоненте связности $V_1$ графа $G$, а вершина $y$ ей не принадлежит. Тогда подграф, индуцированный множеством $V_1$, содержит единственную вершину нечетной степени, что невозможно. 
\end{sol_exerc}

\begin{sol_exerc}
Рассмотрим в замкнутом маршруте вершину $x$, повторяющуюся хотя бы два раза. Эта вершина делит исходный замкнутый маршрут на два замкнутых подмаршрута, один из которых обязательно имеет нечетную длину. Повторяя процесс для подциклов нечетной длины, мы получим в конце концов простой цикл нечетной длины.
\end{sol_exerc}

\begin{sol_exerc}
Опровергают это утверждение следующие два маршрута в простом графе $G$:
$$
M_1=x_1,x_2,\ldots, x_{i-1}, x_{i}, x_{i+1},\dots x_n \qquad \text{и}\qquad  
M_2=x_1,x_2,\dots, x_{i-1}, x_{i}, x_{i-1}, x_{i}, x_{i+1},\dots x_n.
$$ 
\end{sol_exerc}

\begin{sol_exerc}
Данное утверждение, конечно же, верно. Для доказательства достаточно идти вдоль первого пути до первой точки пересечения со вторым путем, а затем вернуться обратно в начальную точку по второму пути. Пройденный путь будет тогда искомым простым циклом.
\end{sol_exerc}

\begin{sol_exerc}
Предположим обратное. Тогда существует простой путь $P$, соединяющий одну из вершин $x$ первого пути $P_1$ с одной из вершин $y$ второго пути $P_2$, и не имеющий с $P_1$ и $P_2$ никаких других общих вершин. Пусть теперь $Q_1$ есть наибольший из двух подпутей, на которые делит путь $P_1$ вершина $x$, а $Q_2$ --- наибольший из двух подпутей, на которые вершина $y$ делит путь $P_2$. Тогда объединение $Q_1\cup P\cup Q_2$ является простым путем, длина которого больше длины любого из двух путей $P_1$ и $P_2$, что невозможно. 
\end{sol_exerc}

\begin{sol_exerc}
Действительно, согласно теореме \ref{theor:first_th_gr}, сумма степеней всех десяти вершин графа $G$ равна $56$. Как следствие, хотя бы несколько вершин (как минимум две) должны иметь степени, большие или равные шести. Пусть $x$, $y$ --- две такие вершины. Суммарная степень этих вершин больше или равна $12$. Даже если они соединены друг с другом ребром, то они соединены еще как минимум с десятью вершинами графа. Но в $G$ помимо $x$ и $y$ существуют еще только восемь вершин, поэтому должны существовать еще как минимум две вершины $u$ и $v$, которые связаны ребрами как с $x$, так и с $y$. Следовательно, эти четыре вершины обязательно образуют цикл длины $4$. 
\end{sol_exerc}

\begin{sol_exerc}
Действительно, первое неравенство очевидно --- диаметр есть наибольшее расстояние между вершинами графа, а радиус есть какое-то расстояние. Второе неравенство также несложно доказать. Рассмотрим для этого одну из центральных вершин $v\in V(G)$ графа $G$. Диаметр графа соединяет какие-то вершины $x$ и $y$ в графе. Рассмотрим пути из $v$ в $x$ и из $v$ в $y$. Длина каждого из этих маршрутов меньше или равна радиусу. Объединив эти два пути, получим какой-то путь, соединяющий $x$ и $y$, длина которого меньше $2r(G)$. Диаметр же есть минимальный путь, соединяющий две эти вершины. Таким образом, $\diam(G)\leq 2r(G)$. 

В полном графе $K_n$ диаметр $\diam(K_n)=r(K_n)=1$. В цепочке из $2n+1$ вершины диаметр в точности равен двум радиусам графа.  
\end{sol_exerc}

\begin{sol_exerc}
Пусть диаметр графа $G$ больше трех. Следовательно, в нем существуют две вершины $x,y\in V(G)$, расстояние между которыми больше трех. Во-первых, это означает, что они несмежны, а значит, в дополнительном графе $\bar G$ они, напротив, смежны. Во-вторых, это означает, что любая третья вершина $z$ графа $G$ не может быть смежной как с $x$, так и с $y$ --- в противном случае расстояние между $x$ и $y$ было бы равно двум. Как следствие, в дополнительном графе $\bar G$ вершина $z$ смежна либо с $x$, либо с $y$. 

Теперь покажем, что в дополнительном графе $\bar G$ длина любого пути меньше или равна трем. Для этого возьмем еще одну вершину $t\in V(G)=V(\bar G)$. В графе $\bar G$ она, согласно вышедоказанному, также является смежной либо с $x$, либо с $y$. Но тогда путь между вершинами $z$ и $t$ равен либо двум, если они оказались смежными с одной и той же вершиной (либо с $x$, либо с $y$), либо трем, если они оказались смежными с разными вершинами $x$ и $y$. 
\end{sol_exerc}




\section{Деревья и их основные свойства}

\myitem Одним из самых важных понятий теории графов является понятие дерева. 

\begin{defin} Деревом называется простой связный граф без циклов. Произвольный (не обязательно связный) простой граф без циклов называется лесом. \end{defin}

\mysubitem Приступим к изучению простейших свойств деревьев.

\begin{defin} Вершина графа, имеющая единичную степень, называется листом.\end{defin}

\begin{lemm} \label{lemm:2_lists_tree}
У любого дерева $T$, построенного на $n\geq 2$ вершинах, имеется как минимум два листа. 
\end{lemm}

\evidp Рассмотрим произвольный простой путь $P=(x_0,x_1,\ldots,x_k)$ максимальной длины в $T$. Очевидно, что такой путь в $T$ всегда существует, причем его длина $k$ равна диаметру $\diam(T)$ дерева $T$. Покажем, что концы этого пути -- вершины $x_0$ и $x_k$  -- обязаны быть листьями. 

Предположим, что это не так, то есть предположим, например, что из вершины $x_k$ исходят два или более ребра. Одно из них --- это ребро $\{x_{k-1} ,x_k\}$. Любое другое исходящее из $x_k$ ребро $e$ не может соединять $x_k$ ни с какой другой из оставшихся вершин пути $P$ --- в противном случае мы бы получили в графе цикл. Следовательно, ребро $e$ соединяет $x_k$ с какой-то новой вершиной $x_{k+1}$ графа $T$. Но в таком случае мы получаем в графе $T$ простой путь $(x_0,x_1,\ldots,x_k,x_{k+1})$, длина которого на единицу больше длины пути $P$. А это, в свою очередь, противоречит тому, что путь $P$ является максимальным. \qed


\mysubitem Из доказанной леммы достаточно легко следует одно из основных свойств дерева $T$.

\begin{theor} 
В дереве $T$, построенном на $n$ вершинах, имеется ровно $(n-1)$ ребро:
$$
|E|=|V|-1=n-1.
$$
\end{theor}

\evids проведем индукцией по количеству $n$ вершин в графе. База индукции очевидна --- дерево, состоящее из $n=1$ вершины, не имеет ни одного ребра. Предположим теперь, что утверждение доказано для деревьев, построенных на $n$ вершинах, и покажем, что оно остается верным для произвольного дерева с $(n+1)$-й вершиной. 

Действительно, по доказанной выше лемме \ref{lemm:2_lists_tree} у любого такого дерева имеется хотя бы один лист $x$. Удалим теперь этот лист $x$ вместе с инцидентным ему ребром $e$. Полученный в результате такой операции граф $T'$ останется, очевидно, связным, и дополнительных циклов в нем также не появится. Следовательно, граф $T'$ является деревом, построенным на $n$ вершинах. Но у такого дерева по индукционному предположению имеется $(n-1)$ ребро. Следовательно, у исходного дерева $T$ имеется ровно $n$ ребер. \qed

Достаточно очевидно и обратное утверждение. 

\begin{theor} \label{theor:simple_graph_n_ver_is_tree}
Любой простой связный граф $G$, построенный на $n$ вершинах и имеющий $(n-1)$ ребро, является деревом. 
\end{theor}

\evidp Действительно, выберем в графе $G$ любую вершину и покрасим ее, например, в красный цвет. Затем начнем последовательно выполнять следующие действия: будем выбирать в $G$ произвольную неокрашенную вершину $x$, смежную с одной из уже окрашенных вершин $y$, и красить ее в красный цвет. Одновременно с этим будем окрашивать в тот же цвет и ребро, соединившее $x$ с окрашенной вершиной $y$ графа $G$. 

Отметим теперь следующий важный момент: в процессе выполнения этих действий мы каждый раз к уже окрашенным вершинам добавляем какую-то новую вершину графа. Как следствие, в получающемся на каждом шаге окрашенном подграфе графа $G$ циклы появиться не могут. Заметим теперь, что за $(n-1)$ шаг мы окрасим таким образом все вершины и ребра графа $G$. Следовательно, в графе $G$ циклы также отсутствуют, то есть он является деревом. \qed

\begin{conseq} \label{conseq:min_num_edges_in_con_gr}
Всякий связный граф, построенный на $n$ вершинах, имеет как минимум $(n-1)$ ребро.
\end{conseq}

\evidp Рассмотрим произвольный связный граф. Если такой граф не является деревом, то у него имеется хотя бы один цикл. В этом цикле мы всегда можем удалить одно ребро, и граф при этом останется связным. Будем продолжать этот процесс до тех пор, пока в графе не останется ни одного цикла. В результате получим простой связный граф без циклов, то есть дерево. Количество ребер у дерева равно $(n-1)$. Следовательно, у исходного графа имеется как минимум $(n-1)$ ребро. \qed

\begin{rem} Данное следствие другими словами можно переформулировать и так: у всякого связного графа существует остовное дерево. Получить это дерево можно, либо удаляя лишние ребра, либо (что более рационально) используя алгоритм, использованный при доказательстве теоремы \ref{theor:simple_graph_n_ver_is_tree}. Этот алгоритм, называемый поиском в глубину, очень часто используется в разнообразных приложениях, связанных с теорией графов. Подробное описание этого алгоритма можно найти, например, в \cite{dasgupta} или в \cite{Korman}.
\end{rem}

\mysubitem Отметим в заключение еще одно важное свойство дерева --- оно является минимально связным графом. 

\begin{defin} Простой связный граф называется минимально связным, если удаление любого ребра приводит к нарушению связности графа.
\end{defin}

\begin{theor} Граф $T$ является деревом тогда и только тогда, когда он является минимально связным графом.  \end{theor}

\evids практически очевидно. Действительно, предположим, что в произвольном минимально связном графе $T$ имеется цикл. Тогда мы можем удалить одно из ребер этого цикла, и получающийся в результате такой операции граф останется связным. Получили противоречие с тем, что $T$ --- минимально связный граф. 

Предположим теперь, что в дереве $T$ существует ребро $e=\{x,y\}$, после удаления которого граф остается связным. Последнее, в частности, означает, что в полученном после удаления ребра графе существует простой путь $P$, связывающий вершины $x$ и $y$. Но тогда в исходном графе $T$ существует цикл $P\cup \{x,y\}$. Это противоречит тому, что $T$ является деревом. \qed

\begin{conseq} Граф $T$ является деревом тогда и только тогда, когда для любых двух его вершин существует единственный простой путь, соединяющий эти вершины. \end{conseq}

\evidp Пусть в $T$ для любой пары вершин существует единственный соединяющий их простой путь. Тогда $T$ является минимально связным графом. Действительно, предположим, что мы можем удалить какое-то ребро $e=\{x,y\}$, и получающийся в результате такой операции граф остается связным. Но тогда в исходном графе $T$, помимо ребра $\{x,y\}$, существует и еще один простой путь, соединяющий вершины $x$ и $y$, что невозможно.

Обратно, пусть $T$ является деревом, и пусть в нем существуют два различных простых пути $P$ и $Q$, соединяющих какие-то две вершины $x$ и $y$. Рассмотрим в $P$ ребра, не принадлежащие $Q$, а в $Q$ --- ребра, не принадлежащие $P$.  Объединение таких ребер образует, очевидно, один или несколько циклов, что противоречит тому, что $T$ является деревом. \qed

\myitem Перейдем теперь к задаче перечисления всех (помеченных) деревьев, построенных на $n$ вершинах. 

\mysubitem Несложно убедиться, что существует по одному дереву, построенному на одной и на двух вершинах, а также три дерева, построенные на трех вершинах. Все эти три дерева отличаются друг от друга только расположением меток вершин. В случае $n=4$ таких деревьев существует уже $16$ штук --- $12$ деревьев, отвечающих линейной цепочке вершин, и $4$ дерева, построенных на ``треножнике''. Задача этого пункта --- доказать следующий общий результат, известный как формула Кэли.

\begin{theor}[Формула Кэли] Количество $a_n$ различных помеченных деревьев на $n$ вершинах равно $n^{n-2}$. \end{theor} 

К настоящему моменту известно около шестнадцати различных способов доказательства этого результата. Метод, связанный с производящими функциями, мы рассмотрим в курсе комбинаторики. Здесь же мы приведем доказательство, основанное на биекции между множеством всех деревьев и множеством всех слов длины $(n-2)$ над алфавитом $A=[n]:=\{1,2,\ldots,n\}$ --- так называемых кодов или последовательностей Прюфера. Это доказательство было впервые предложено Хайнсом Прюфером (Heinz Pr\"ufer) в 1918 году.

\mysubitem Рассмотрим дерево $T$, вершины которого помечены элементами множества $[n]$, и покажем вначале, как сопоставить такому дереву числовую последовательность вида
$$
P(T)=(y_1,y_2,\ldots,y_{n-2}),\qquad \qquad y_i\in[n],
$$ 
называемую кодом Прюфера. Для этого на первом шаге выберем среди всех листьев дерева $T=T_n$ вершину $x_1$ с минимальным номером, удалим эту вершину вместе с инцидентным ей ребром $e_1=\{x_1,y_1\}$, а затем запишем $y_1$ в качестве первого символа в нашем коде. Полученное в результате удаления ребра $e_1$ дерево обозначим через $T_{n-1}$. Будем повторять этот процесс до тех пор, пока у нас не останется дерево $T_2$, состоящее ровно из двух вершин и соединяющего их ребра. 

\begin{examp} \label{examp:code_Pruf}
Рассмотрим дерево $T=T_{10}$, изображенное на рис.\ref{fig:prufer_tree},a. Среди всех его листьев минимальный номер имеет вершина $3$. Удалим эту вершину вместе с инцидентным ей ребром $e_1=\{3,2\}$. В результате получим дерево $T_9$, а также первый символ в коде Прюфера $y_1=2$. Среди листьев дерева $T_9$ минимальный номер имеет вершина $4$. Ее удаление дает нам дерево $T_8$, а также второй член $y_2=2$ последовательности Прюфера. Продолжая этот процесс, на заключительном, $8$-м шаге мы получаем дерево $T_2$, построенное на вершинах $10$ и $9$, а также код Прюфера
$$
P(T)=(2,2,1,1,7,1,10,10).
$$
\end{examp}


\begin{figure}[h]
\centering

\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.9]{pics/prufer_tree_3.eps}
 	\caption{Исходное дерево $T=T_{10}$ \\ \phantom{hidden} }
	\end{subfigure}



	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.9]{pics/prufer_tree_4.eps}
 	\caption{Дерево $T_5$}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:prufer_tree}
\end{figure}




\mysubitem Докажем теперь, что описанное выше отображение, сопоставляющее любому помеченному дереву $T$ числовую последовательность $P(T)$, взаимно-однозначно. Для этого нам достаточно показать, как по любому коду Прюфера $P(T)$ можно однозначно восстановить исходное дерево $T$. 

Заметим, прежде всего, что любая вершина $x_i$, $i=1,\ldots,n$, встречается в коде Прюфера $P(T)$ ровно $\deg_T(x_i)-1$ раз. В частности, листья исходного дерева $T$ в этом коде вовсе не встречаются.

Рассмотрим теперь при фиксированном $k=1,\ldots,(n-2)$ дерево $T_{n-k+1}$. По построению, оно у нас состоит из вершин $x_k,\ldots,x_{n-1},x_n\equiv n$, а также из ребер $\{x_k,y_k\},\ldots,\{x_{n-2},y_{n-2}\},\{x_{n-1},n\}$. Такому дереву отвечает код Прюфера вида
$$
P(T_{n-k+1})=(y_k,\ldots,y_{n-2}).
$$
При этом любая вершина $x_i$ дерева $T_{n-k+1}$ встречается в последовательности $P(T_{n-k+1})$ ровно $\deg_{T_{n-k+1}}(x_i)-1$ раз. В частности, листья дерева $T_{n-k+1}$ в такую последовательность не входят. Очевидно также, что эти листья не встречаются и в подмножестве $\{x_1,\ldots,x_{k-1}\}$ множества $[n]$. Действительно, в это подмножество входят все вершины исходного дерева $T$, не вошедшие в дерево $T_{n-k+1}$. Как следствие, листья в дереве $T_{n-k+1}$ --- это те элементы множества $[n]$, которые не встречаются в наборе $\{x_1,\ldots,x_{k-1}\}\cup \{y_k,\ldots,y_{n-2}\}$ элементов этого множества.

Так, в примере \ref{examp:code_Pruf} дерево $T_5$ (рис.\ref{fig:prufer_tree},b), состоит из вершин $\{1,7,8,9,10\}$. Код Прюфера этого дерева имеет вид
$$
P(T_5)=(1,10,10).
$$
В него не входят числа $7,8,9$, являющиеся листьями дерева $T_5$. Их нет также в подмножестве 
$$
\{2,3,4,5,6\}\subset [10]=\{1,2,\ldots,10\}.
$$
Следовательно, числа $7,8,9$ --- это те числа, которые не содержатся в наборе
$$
\{2,3,4,5,6\}\cup\{1,10,10\}\equiv \{1,2,3,4,5,6,10\}
$$
элементов множества $[10]$. 

Обозначим через $L_k$ множество всех листьев дерева $T_{n-k+1}$, то есть множество вершин, не входящих в набор $\{x_1,\ldots,x_{k-1}\}\cup \{y_k,\ldots,y_{n-2}\}$. Выберем наименьшее из чисел множества $L_k$. По построению, это число отвечает вершине $x_k$ дерева $T_{n-k+1}$. Действительно, эта вершина должна быть удалена на $k$-м шаге как наименьшая среди всех листьев дерева $T_{n-k+1}$. В частности, $x_1$ --- это наименьший элемент множества $[n]$, не вошедший в код Прюфера $P(T)$. Так, в примере \ref{examp:code_Pruf} элемент $x_1=3$. Далее, $x_2$ --- это наименьшее число, не входящее в набор $\{x_1\}\cup \{y_2,\ldots,y_{n-2}\}$, $x_3$ --- это наименьшее число, не входящее в набор $\{x_1,x_2\}\cup \{y_3,\ldots,y_{n-2}\}$ и так далее. 

Продолжая этот процесс, мы можем последовательно восстановить все числа $x_k$, $k=1,\ldots,(n-2)$. Имея две числовые последовательности $(x_1,\ldots,x_{n-2})$ и $(y_1,\ldots,y_{n-2})$, мы легко сможем построить исходное дерево $T$. Действительно, дерево $T_2$ состоит из ребра, соединяющего вершины $n$ и $x_{n-1}$, где $x_{n-1}$ --- элемент множества $[n]$, не входящий в подмножество $\{x_1,\ldots,x_{n-2},n\}$. Последовательно присоединяя к $T_2$ ребра $\{x_{n-2},y_{n-2}\}$, $\{x_{n-3},y_{n-3}\}$, мы восстановим в конечном итоге исходное дерево $T_n=T$.   

В качестве примера рассмотрим код Прюфера 
$$
P(T)=(2,2,1,1,7,1,10,10).
$$
Ему соответствует упорядоченный набор чисел 
$$
(x_1,\ldots,x_8)=(3,4,2,5,6,7,1,8).
$$
Не входящие в этот набор числа $9$ и $10$ представляют собой две вершины дерева $T_2$, образующиеся после удаления восьми вершин дерева $T=T_{10}$, которое нам надо построить. Добавляя к дереву $T_2$ ребро $\{x_8,y_8\}=\{8,10\}$, мы получаем дерево $T_3$. Из дерева $T_3$ добавлением ребра $\{x_7,y_7\}=\{1,10\}$ строится дерево $T_4$ и так далее. В результате получаем дерево $T$ из примера \ref{examp:code_Pruf}, изображенное на рис.\ref{fig:prufer_tree},a.


\section*{Упражнения}

\begin{exerc} Пусть $F$ есть лес, построенный на $n$ вершинах и имеющий $k$ компонент связности. Подсчитать количество ребер в графе $F$.
\end{exerc}

\begin{exerc} Пусть у нас имеется некоторая невозрастающая последовательность 
$$
a_1\geq a_2\geq \ldots\geq a_n\geq 1,\qquad n\geq 2,
$$
натуральных чисел $a_i$. Каким условиям должны удовлетворять члены этой последовательности для того, чтобы существовало дерево $T$, степени вершин которого совпадали бы с числами $a_i$? 
\end{exerc}

\begin{exerc} Доказать, что в простом графе, содержащем $m\geq (n-1)$ ребер, существует как минимум $m-n+1$ циклов.
\end{exerc}

\begin{exerc} Из утверждения \ref{conseq:min_num_edges_in_con_gr}, в частности, следует, что любой граф на $n$ вершинах, имеющий меньше $(n-1)$-го ребра, обязательно является несвязным. В случае, когда $|E(G)|\geq (n-1)$, граф $G$ может быть как связным, так и несвязным. Сколько ребер должен иметь простой граф на $n$ вершинах, чтобы он гарантированно был связным?
\end{exerc}

\begin{exerc} Введем несколько чрезвычайно полезных понятий.

\begin{defin} \emph{Корневым деревом} называется дерево с выделенной вершиной, называемой корнем. \emph{Корневым лесом} называется лес, каждая компонента связности которого представляет собой корневое дерево.  
\end{defin}

Доказать, что количество корневых лесов, построенных на $n$ вершинах, равно $(n+1)^{(n-1)}$. 
\end{exerc}

\begin{exerc} Пусть у нас имеется улица с односторонним движением, на которой расположено $n$ парковочных мест. На эту улицу последовательно заезжают машины с порядковыми номерами от $1$ до $n$. Каждая $i$-я машина по прибытии едет вначале к своему любимому парковочному месту $f(i)$. Если это место оказывается свободным, то она занимает его. В противном случае она пытается занять первое следующее за ним свободное место. В случае, если такового не оказывается, процесс парковки считается завершившимся неудачей. 

Функция $f\colon [n]\to [n]$ называется парковочной функцией, если задаваемая ею парковка всех $n$ машин прошла успешно. Доказать, что количество всех различных парковочных функций равно $(n+1)^{(n-1)}$. 
\end{exerc}

\begin{exerc}
С использованием кода Прюфера сосчитать количество различных помеченных деревьев на множестве вершин $X=[7]$, в которых вершины $2$ и $3$ имеют степень $3$, вершина $5$ имеет степень $2$, а остальные вершины, как следствие, имеют степень, равную $1$.
\end{exerc}

\begin{exerc}
Обобщить полученный в предыдущем упражнении результат на случай дерева на $n$ вершинах, степени которых равны $a_1,a_2,\ldots,a_n$. 
\end{exerc}

\begin{exerc}
Рассмотрим произвольное отображение $f \colon X \to Y$ множества $X = \{2,3,...,n-1\}$ в $n$-элементное множество чисел $Y = [n]$. По этому отображению можно построить (несвязный) ориентированный граф $D$ с ребрами вида $(i,f(i))$. Установить биекцию между такими орграфами и неориентированными помеченными деревьями на n вершинах, доказав тем самым, что количество таких деревьев равно $n^{(n-2)}$.
\end{exerc}


\section*{Решение упражнений}

\begin{sol_exerc} 
Любая компонента связности графа $F$ представляет собой дерево. Количество ребер в этой компоненте на единицу меньше количества вершин. Следовательно, в графе $F$ количество ребер на $k$ единиц меньше количества вершин:
$$
|E(F)|=|V(F)|-k=n-k.
$$
\end{sol_exerc}

\begin{sol_exerc} 
Согласно теореме \ref{theor:first_th_gr}, сумма степеней вершин равна удвоенному количеству ребер. В дереве это количество равно $(n-1)$. Следовательно, равенство
$$
a_1+a_2+\ldots+a_n=2n-2
$$
является необходимым условием существования дерева, степень любой вершины $x_i$ которого равна $a_i$, $i=1,\ldots,n$. 

Далее, согласно лемме \ref{lemm:2_lists_tree}, в дереве имеются по крайней мере два листа. Это означает, что как минимум два последних члена этой последовательности должны быть равны единице:
$$
a_{n-1}=a_n=1.
$$

Покажем теперь, что эти условия являются и достаточными условиями существования дерева, степени вершин которых совпадают с числами $a_i$. Доказательство проведем индукцией по количеству $n$ вершин в дереве. Случай $n=2$ тривиален: дереву $T_2$, построенному на двух вершинах, отвечает единственная удовлетворяющая сформулированным нами условиям последовательность чисел $(1,1)$. Предположим теперь, что утверждение доказано для значения $n\geq 2$ и покажем, что оно остается верным и для случая $n+1$. 

Для этого рассмотрим произвольную невозрастающую последовательность вида
\begin{equation}
\label{eq:seq_num_tree}
a_1\geq a_2\geq \ldots\geq a_n\geq a_{n+1}\geq 1:\qquad a_1+a_2+\ldots+a_n+a_{n+1}=2n,\quad a_n=a_{n+1}=1.
\end{equation}
Пусть теперь $i<n$ есть наибольший индекс, такой, что $a_i>1$. Очевидно, что такое $i$ существует: в противном случае получили бы последовательность, состоящую из одних единиц, сумма которых равна $n+1<2n$ для любого $n\geq 2$. По индукционному предположению, для последовательности чисел
$$
a_1\geq a_2\geq a_{i-1}\geq (a_i-1)\geq a_{i+1}\geq\ldots \geq a_n,
$$
таких, что
$$ 
a_1+a_2+\ldots+a_{i-1}+(a_i-1)+a_{i+1}+\ldots+a_{n}=2n,\qquad a_{i+1}=\ldots=a_{n}=1,
$$
существует дерево $T_n$, степени вершин которого равны членам данной последовательности. Добавим теперь к графу $T_n$ вершину $x_{n+1}$, и соединим ее ребром с вершиной $x_i$. В результате получим дерево $T_{n+1}$, степени вершин которого совпадают с членами числовой последовательности (\ref{eq:seq_num_tree}). 
\end{sol_exerc}

\begin{sol_exerc} 
Заметим, прежде всего, что если хотя бы одна вершина графа $G$ является изолированной, то граф $G$ является несвязным даже в том случае, если на оставшейся $(n-1)$-й вершине построен полный подграф $K_{n-1}$. Следовательно, граф $G$ может иметь $\BCf{n-1}{2}$ ребер и оставаться при этом несвязным. Оказывается, что это и есть максимальное количество ребер, при котором $G$ все еще остается несвязным. Иными словами, любой простой граф на $n$ вершинах, имеющий как минимум $\BCf{n-1}{2}+1$ ребро, уже является связным. Докажем это утверждение.

Для этого рассмотрим произвольный простой несвязный граф $G$. В таком графе обязательно существуют две несвязанные между собой вершины $x$ и $y$. Возьмем тогда все смежные с $x$ вершины, удалим соединяющие их с вершиной $x$ ребра, и соединим эти вершины ребрами с вершиной $y$. В результате получим граф $G'$ с изолированной вершиной $x$, количество ребер в котором совпадает с количеством ребер в исходном графе $G$. Это количество, очевидно, не превосходит количества $\BCf{n-1}{2}$ ребер в графе, состоящем из изолированной вершины $x$ и полного подграфа $K_{n-1}$, построенного на оставшихся вершинах. Следовательно, и количество ребер в исходном связном графе не может превосходить эту величину.
\end{sol_exerc}

\begin{sol_exerc} 
Легче всего доказать данное утверждение индукцией по количеству $m$ ребер. База индукции $m=n-1$ представляет собой утверждение теоремы \ref{theor:simple_graph_n_ver_is_tree}. Теперь предположим, что утверждение верно для некоторого $m\geq (n-1)$ и покажем, что оно остается верным и для $m+1$. Граф $G$, содержащий такое количество ребер, деревом уже не является, поэтому он содержит хотя бы один цикл $C$. Удалим одно из ребер этого цикла. В результате получим граф, содержащий $m$ ребер, который, согласно индукционному предположению, имеет хотя бы $m-n+1$ цикл. Следовательно, исходный граф $G$ содержит с учетом цикла $C$ как минимум $m-n+2$ цикла.  
\end{sol_exerc}

\begin{sol_exerc} 
Для доказательства данного равенства достаточно доказать, что множество таких лесов изоморфно множеству всех деревьев, построенных на $(n+1)$-й вершине. А это сделать достаточно просто. Действительно, возьмем произвольный лес, состоящий из $k$ компонент, и добавим к нему вершину, помеченную числом $(n+1)$. Соединяя эту вершину со всеми корневыми вершинами леса, мы получим дерево на $(n+1)$-й вершине. Обратно, взяв любое такое дерево и удалив в нем вершину, помеченную числом $(n+1)$, вместе с инцидентными ей ребрами, получим лес, корень любой компоненты которого совпадает с одной из вершин, смежных с вершиной $(n+1)$ в исходном дереве. 
\end{sol_exerc}

\begin{sol_exerc} 
Опишем один из наиболее простых способов доказательства данного утверждения \cite{Bona}. Предположим, что вместо улицы с односторонним движением машины прибывают на кольцевую дорогу, имеющую $(n+1)$ парковочное место. При этом считается, что в случае, если машина с номером $i$ не может припарковаться на местах с номерами от $f(i)$ до $(n+1)$, то она возвращается к парковочному месту $1$ и пытается припарковаться на любом из свободных мест с номерами от $1$ до $f(i)-1$. Очевидно, что при таком способе парковки все машины в конечном итоге займут $n$ парковочных мест. Количество способов это сделать равно $(n+1)^n$. 

Заметим теперь, что любой вариант кольцевой парковки, при котором одна из машин заняла место с номером $(n+1)$, означает неудачу исходного линейного способа парковки машин на улице с односторонним движением, и наоборот, любой вариант, при котором это место остается свободным, дает нам некоторый вариант успешной линейной парковки машин. С другой стороны, вероятность остаться пустым одинакова для любого из $(n+1)$ мест круговой парковки. Следовательно, существует всего $(n+1)^n/(n+1)=(n+1)^{(n-1)}$ вариантов успешной линейной парковки.
\end{sol_exerc}

\begin{sol_exerc} 
Код Прюфера для такого дерева представляет собой любую перестановку упорядоченной последовательности вида
$(2,2,3,3,5).$ Количество таких перестановок равно
$$
\dfrac{5!}{2!\cdot 2!\cdot 1!}=30.
$$
\end{sol_exerc}

\begin{sol_exerc} Любая вершина с номером $i$ встречается в коде Прюфера $(a_i-1)$ раз. Следовательно, каждое помеченное дерево на $n$ вершинах отвечает некоторой перестановке с повторениями числовой последовательности длины $(n-2)$. Количество таких перестановок описывается мультиномиальным коэффициентом 
$$
\BCf{n-2}{a_1-1,a_2-1,\ldots,a_n-1}=\dfrac{(n-2)!}{(a_1-1)!\cdot (a_2-1)!\cdot\ldots\cdot (a_n-1)!}.
$$
\end{sol_exerc}

\begin{sol_exerc} 
Орграф $D$ состоит из двух корневых ориентированных деревьев с корнями в вершинах $1$ и $n$, а также из некоторого количества $k$ ориентированных циклов $C_i$, $i=1,\ldots,k$, к любой из вершин которого может примыкать ориентированное дерево с корнем в этой вершине. Обозначим через $r_i$ минимальную вершину в каждом из циклов $C_i$, а через $l_i$ --- первую вершину цикла $C_i$, следующую за $r_i$. 

Проделаем теперь следующие действия: yпорядочим циклы $C_i$ в порядке возрастания номеров вершин $r_i$, добавим к графу $D$ ребра $(1,l_1),(r_1,l_2),\ldots,(r_k,n)$, удалим все ребра вида $(r_i,l_i)$, и забудем про ориентацию ребер. В результате получим некоторое дерево $T$, построенное на $n$ вершинах.

Обратно, предположим, что у нас имеется дерево $T$, помеченное числами множества $[n]$. Рассмотрим в нем простой путь из вершины $1$ в вершину $n$. Рассмотрим в нем все внутренние (то есть отличные от $1$ и $n$) вершины и выберем в нем вершину $r_1$ с минимальным номером. Теперь для любого $i\geq 1$ в качестве $r_i$ выберем вершину, номер которой минимален среди всех внутренних вершин простого пути из $r_{i-1}$ в $n$. Имея последовательность вершин $1,r_1,\ldots,r_k,n$, несложно построить диграф $D$, а по нему восстановить отображение $f$ из множества $\{2,3,\ldots,n-1\}$ в $[n]$. 

Таким образом, получили изоморфизм между множеством всех деревьев и множеством всех отображений из $(n-2)$-элементного множества в $n$. Таких отображений $n^{(n-2)}$. Следовательно, столько же и всех деревьев на $n$ вершинах. 
\end{sol_exerc}





\section{Эйлеровы и гамильтоновы циклы. Граф де Брейна}

\myitem Обратимся теперь к самой первой по времени содержательной задаче теории графов --- задаче о кенигсбергских мостах (смотри  рис.\ref{fig:kenigsberg},a), которая была предложена жителями города Кенигсберга (ныне --- Калининграда) для решения Леонарду Эйлеру в тридцатых годах восемнадцатого века.

\mysubitem Вот как описывал постановку задачи сам Эйлер: ``Некогда мне была предложена задача об острове, расположенном в городе Кенигсберге и окруженном рекой, через которую перекинуто семь мостов. Спрашивается, может ли кто-нибудь обойти их, переходя только однажды через каждый мост. И тут же мне было сообщено, что никто до сих пор не мог это проделать, но никто и не доказал, что это невозможно. Вопрос этот, хотя и банальный, показался мне, однако, достойным внимания тем, что для его решения недостаточны ни геометрия, ни алгебра, ни комбинаторное искусство...''. Эйлер не только решил эту задачу, но и установил необходимое условие, позволяющее определить, можно ли обойти любой город, имеющий мосты, так, чтобы пройти по всем мостам, не проходя дважды ни по одному из них. 


\mysubitem Для решения задачи о кенигсберсгских  мостах вслед за Эйлером нам следует, прежде всего, формализовать эту задачу. Именно, построим упрощенную схему города, заменяя части города точками --- вершинами графа, а мосты --- дугами, то есть ребрами этого графа (смотри рис.\ref{fig:kenigsberg},a). В результате мы придем к графу, изображенному на рис.\ref{fig:kenigsberg},b. 


\begin{figure}[h]
\centering

\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.3]{pics/kenig.png}
 	\caption{Кёнигсберг}
	\end{subfigure}



	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/kenig_graph.eps}
 	\caption{Граф}
	\end{subfigure}
\end{tabular}
\caption{К задаче о кёнигсбергских мостах}
\label{fig:kenigsberg}
\end{figure}


Теперь настало время дать несколько дополнительных определений.

\begin{defin} \emph{Эйлеровым путем} в произвольном (не обязательно простом) графе называется путь, который проходит через \emph{каждое} ребро графа ровно один раз. Эйлеров путь, начинающийся и заканчивающийся в одной и той же вершине, называется \emph{эйлеровым циклом.} 
\end{defin}

\begin{defin} Любой граф, в котором существует эйлеров цикл, называется \emph{эйлеровым графом.} Граф, в котором существует эйлеров путь, называется \emph{полуэйлеровым.} 
\end{defin}

Итак, нам нужно определить, является ли граф, изображенный на рис.\ref{fig:kenigsberg},b, эйлеровым. Эйлер ответил на этот вопрос отрицательно, доказав следующее необходимое условие существования эйлерова цикла в графе.

\begin{theor}[Необходимое условие существования эйлерова цикла в графе] Для существования в графе эйлерова цикла необходимо, чтобы он был связным, и чтобы все вершины этого графа имели четную степень.
\end{theor}

\evids этого факта довольно несложно. Требование связности очевидно. Далее, в эйлеровом цикле мы должны войти в любую вершину через одно ребро и выйти из нее через другое. Следовательно, степень любой вершины должна быть четной. \qed

В графе, представленном на рис.\ref{fig:kenigsberg},b, имеются вершины нечетных степеней. Следовательно, эйлерова цикла в нем не существует. 


\mysubitem Эйлер оставил без доказательства достаточность сформулированного им условия. Первое полное доказательство теоремы об эйлеровом цикле было дано немецким математиком Карлом Хиерхолцером лишь в 1873 году. 

\begin{theor}[Достаточное условие существования эйлерова цикла в графе] \label{theor:eul_cycle}
Для того, чтобы граф имел эйлеров цикл, достаточно, чтобы он был связным и любая его вершина имела четную степень. 
\end{theor}

\evidp Выберем произвольную вершину $x\in V(G)$ в графе $G$ и будем совершать его обход, проходя по каждому ребру лишь один раз, до тех пор, пока мы не сможем двигаться дальше, не нарушая это условие. Так как любая вершина в графе имеет четную степень, то войдя в любую вершину графа, отличную от $x$, по одному из ребер, мы всегда сможем из нее выйти по какому-то другому ребру. Единственным исключением в этом смысле является сама вершина $x$: если мы вернемся в исходную вершину $x$, обойдя по разу каждое из инцидентных $x$ ребер, то мы уже не сможем из нее выйти. Итак, процесс обхода неизбежно закончится в точке $x$. 

Обозначим полученный в процессе такого обхода цикл через $C_1$. Если он совпал со всем графом, то все доказано --- граф $G$ является эйлеровым. В противном случае у нас в графе остались какие-то ребра, через которые мы еще не прошли. Какое-то из этих ребер обязательно должно быть инцидентным одной из вершин $y$, принадлежащих циклу  $C_1$. 

Действительно, предположим, что это не так, то есть предположим, что все ребра, инцидентные вершинам $C_1$, принадлежат этому циклу, а сам цикл $C_1$ не совпадает со всем графом $G$. В таком случае в графе обязательно найдется вершина $z$, такая, что ни она сама, ни все инцидентные ей ребра не принадлежат циклу $C_1$. Так как граф $G$ связный, то в нем существует путь $P$, соединяющий точки $z\notin C_1$ и $x\in C_1$. Заметим, что по построению, цикл $C_1$ содержит все ребра графа, инцидентные $x$. Следовательно, путь $P$ обязательно содержит как ребра, принадлежащие $C_1$, так и ребра, $C_1$ не принадлежащие. А такой путь обязательно содержит вершину $y$ и два инцидентных ей ребра, одно из которых принадлежит $C_1$, а другое --- не принадлежит $C_1$. 

Рассмотрим теперь подграф $G\setminus C_1$, образованный ребрами, не вошедшими в цикл $C_1$. Повторим для него процедуру обхода, начиная с выбранной ранее вершины $y$. Полученный в результате такого обхода цикл $C_2$ можно объединить с циклом $C_1$ в единый замкнутый цикл $C_1\cup C_2$. Действительно, стартуя с точки $x\in C_1$, мы можем остановиться в точке $y\in C_1$, обойти весь цикл $C_2$, а затем продолжить обход по оставшейся части цикла $C_1$. Если теперь $C_1\cup C_2=G$, то все доказано. Если же нет, то нам следует продолжить процедуру до тех пор, пока полученное на $k$-м шаге объединение циклов $C_1\cup\ldots\cup C_k$ не совпадет со всем графом $G$.\qed

\mysubitem Итак, окончательно нами доказано следующее утверждение.

\begin{theor} Связный граф $G$ имеет эйлеров цикл тогда и только тогда, когда все степени его вершин четные.
\end{theor}

Из этой теоремы немедленно вытекает и следующее

\begin{conseq} \label{conseq:euler_path}
Связный граф $G$ имеет эйлеров путь, начинающийся в вершине $x\in V(G)$ и заканчивающийся в некоторой другой вершине $y\in V(G)$ тогда и только тогда, когда степени вершин $x$ и $y$ нечетные, а степени всех остальных вершин являются четными.
\end{conseq}

\evidp Действительно, добавим к графу $G$ еще одно дополнительное ребро, соединяющее точки $x$ и $y$. Полученный в результате граф имеет эйлеров цикл тогда и только тогда, когда исходный граф $G$ имеет эйлеров путь, соединяющий точки $x$ и $y$. Это обстоятельство и доказывает следствие \ref{conseq:euler_path}. \qed

\begin{rem} Полученные результаты достаточно легко перенести на случай орграфов. Именно, сильно связанный орграф имеет эйлеров цикл тогда и только тогда, когда входящая степень любой его вершины совпадает с исходящей степенью.
\end{rem}

\myitem Во многих практических задачах наряду с эйлеровыми циклами часто встречаются и так называемые \emph{гамильтоновы циклы} --- простые циклы, проходящие через каждую вершину графа. 

\mysubitem Пожалуй, наиболее известная из таких задач --- это так называемая \emph{задача о коммивояжере.} В этой задаче торговец должен обойти все города из некоторого списка, заходя в каждый город только один раз, и вернуться в исходный город, с которого он начал свое путешествие. Обычно при этом указывается некоторый критерий оптимальности маршрута (кратчайший, самый дешевый и прочее). В случае, когда дополнительные критерии не указаны, задача сводится к поиску гамильтонова цикла в графе, вершинами которого являются города, а ребрами --- соединяющие их дороги.

Еще одна задача, собственно, и дала имя гамильтонову циклу --- она была описана в письме Гамильтона своему другу в форме математической игры на додекаэдре (рис.\ref{fig:dodecahedron}). В этой игре один из игроков должен был вставить палочки в любые пять последовательно идущих вершин додэкаэдра, а второй --- продолжить этот путь на все оставшиеся вершины. Иными словами, игроки должны были найти простой цикл, проходящий через все вершины додекаэдра. Одно из возможных решений показано на рис.\ref{fig:dodecahedron}

\begin{figure}[h]
\centering
\includegraphics[scale=1.0]{pics/dodecahedron.eps}
\caption{Гамильтонов цикл в додекаэдре}
\label{fig:dodecahedron}
\end{figure}


\mysubitem Как и в случае эйлерова цикла, первый вопрос, который возникает при анализе подобного рода задач, это вопрос существования гамильтонова цикла в заданном графе. Очевидными необходимыми условиями существования гамильтонова цикла в графе $G$ является связность этого графа, а также отсутствие в нем вершин степени $\deg(x)=1$, то есть листьев. Еще одно необходимое условие описано в упражнении \ref{exerc:ness_cond_Ham_cycle}, а в упражнении \ref{exerc:examp_use_ness_cond} приведены примеры графов, в которых это необходимое условие не выполняется. Основная проблема со всеми известными на сегодняшний момент необходимыми условиями существования гамильтонова цикла в графе состоит в том, что ни одно из них не является одновременно и достаточным. 

Конечно же, существуют графы, для которых вопрос о существовании гамильтонова цикла очевиден. Так, в простом связном графе на $n=2$ вершинах гамильтонов цикл не существует (хотя существует \emph{гамильтонов путь} --- простой путь, проходящий через все вершины графа). В любом циклическом графе (или многоугольнике, или полигоне), построенном на $n>2$ вершинах, существуют ровно один гамильтонов цикл. В случае полного графа $K_n$, $n>2$, существует $(n-1)!/2$ гамильтоновых циклов (смотри упражнение \ref{exerc:num_Ham_cycl_comp_gr}).  

В общем же случае ответ на вопрос, существует ли в данном графе гамильтонов цикл, совершенно нетривиален. В частности, на настоящий момент нет никаких простых критериев существования гамильтонова цикла, подобных тому, что мы сформулировали выше для, казалось бы, очень похожего понятия эйлерова цикла. Более того, в 1972 году Ричард Карп доказал, что задача определения того, существует ли в произвольном графе гамильтонов цикл, является $NP$-полной задачей. 

Несмотря на это печальное обстоятельство, в теории графов все же имеется целый ряд достаточных условий существования гамильтонова пути или цикла в графе. Так, интуитивно понятно, что чем больше у (простого связного) графа, построенного на $n$ вершинах, ребер, тем больше вероятность того, что в нем существует гамильтонов цикл. Это видно хотя бы из того, что в полном графе $K_n$, количество ребер в котором максимально, гамильтонов цикл гарантированно существует. Ниже мы сформулируем несколько результатов, которые формализуют это интуитивное наблюдение.

\mysubitem Предположим вначале, что мы смогли каким-то образом построить в простом графе $G$ гамильтонов путь  $P=x_1,\ldots,x_n$, $n>2$. Возникает вопрос, когда мы этот путь можем достроить до гамильтонова цикла $C$. Ответ очевиден в том случае, когда концы построенного пути --- вершины $x_1$ и $x_n$ --- оказываются смежными. В этом случае мы всегда можем достроить путь $P$ до гамильтонова цикла $C$, добавив к нему ребро $\{x_1,x_n\}$. Случай несмежных вершин $x_1$ и $x_n$ является уже не столь очевидным.  

\begin{lemm}\label{lemm:path_length}
Пусть в простом графе $G$ имеется гамильтонов путь $P=x_1,\ldots,x_n$, $n>2$, соединяющий пару несмежных вершин $x_1$ и $x_n$. Достаточным условием существования гамильтонова цикла в таком графе является выполнение следующего неравенства:  
\begin{equation}
\label{eq:cond_Ore_cycle_1n}
\deg(x_1)+\deg(x_n)\geq n.
\end{equation}
\end{lemm}

\evidp  Пусть степень вершины $x_1$ равна $l$. Условие (\ref{eq:cond_Ore_cycle_1n}) означает, что среди любых $l$ отличных от $x_n$ вершин графа $G$ найдется хотя бы одна вершина, смежная с $x_n$. Действительно, если бы это было не так, то степень вершины $x_n$ была бы меньше или равна $(n-l-1)$: $l$ не смежных с $x_n$ вершин плюс сама вершина $x_n$ вклада в $\deg(x_n)$ не дают. Это, в свою очередь, противоречит неравенству (\ref{eq:cond_Ore_cycle_1n}).

Так как путь $P$ гамильтонов, то он проходит через все вершины графа,  в том числе и через все смежные с $x_1$ вершины $y_1,\ldots,y_l$. Кроме того, он задает на множестве $V(G)$ вершин естественный порядок. Рассмотрим тогда $l$ вершин, предшествующих вершинам $y_1,\ldots,y_l$ в смысле указанного выше порядка. По построению, ни одна из этих вершин не совпадает с $x_n$. Тогда, согласно вышедоказанному, хотя бы одна из этих вершин смежна с $x_n$. Обозначим эту вершину через $x_i$. Она отлична от $x_1$, так как по условию вершины $x_1$ и $x_n$ несмежны. Кроме того, следующая за ней в пути $P$ вершина $x_{i+1}\in\{y_1,\ldots,y_l\}$, то есть смежна с $x_1$. Все, что нам осталось понять --- это то, что в таком случае цикл 
$$
x_1,\ldots,x_i,x_n,x_{n-1},\ldots,x_{i+1},x_1
$$
является искомым гамильтоновым циклом в графе $G$ (смотри рис.\ref{fig:hamiltonian_cycle}). 


\begin{figure}[h]
\centering
\includegraphics[scale=1.0]{pics/hamiltonian.eps}
\caption{Построение гамильтонова цикла в графе}
\label{fig:hamiltonian_cycle}
\end{figure}

\qed

\begin{conseq}\label{conseq:path_length}
Пусть $P=x_1,\ldots,x_k$, $k>2$, есть максимальный простой путь в графе $G$. Тогда этот путь можно превратить в гамильтонов цикл $C$ в случае, когда концы пути $P$ --- вершины $x_1$ и $x_k$ --- являются смежными, либо в случае, когда сумма степеней этих вершин больше или равна $k$:  
\begin{equation}
\label{eq:cond_Ore_cycle_1k}
\deg(x_1)+\deg(x_k)\geq k.
\end{equation}
\end{conseq}

\evidp Действительно, в случае, когда вершины $x_1$ и $x_k$ являются смежными, искомый цикл $C$ получается добавлением к пути $P$ ребра $\{x_1,x_k\}$. 

Предположим, что вершины $x_1$ и $x_k$ оказались несмежными. Заметим, что эти вершины соединены ребрами только с какими-то другими вершинами того же пути --- в противном случае путь $P$ не был бы максимальным.

Рассмотрим подграф $H$, индуцируемый всеми вершинами пути $P$. Согласно сделанному выше замечанию, степени вершин $x_1$ и $x_k$ в этом подграфе останутся прежними. Как следствие, неравенство (\ref{eq:cond_Ore_cycle_1k}) для этих вершин окажется верным и в подграфе $H$. Но в этом подграфе путь $P$ является гамильтоновым. Следовательно, его можно превратить в гамильтонов цикл $C$ способом, описанным при доказательстве леммы \ref{lemm:path_length}. \qed

\mysubitem Следующая теорема дает нам достаточные условия существования гамильтонова пути в графе. 

\begin{theor}[Оре]\label{theor:Ore}
Пусть $G$ --- простой граф, построенный на $n>2$ вершинах. Если для любых двух несмежных вершин $x,y$ графа $G$ выполняется условие 
\begin{equation}
\label{eq:cond_Ore_path}
\deg(x)+\deg(y)\geq n-1,
\end{equation}
то граф $G$ имеет гамильтонов путь. 
\end{theor}

\evidp Заметим, прежде всего, что любой граф $G$, удовлетворяющий условиям  (\ref{eq:cond_Ore_path}), является связным. Действительно, рассмотрим произвольную пару несмежных вершин $x$ и $y$. Помимо этих вершин, в графе $G$ имеются еще $(n-2)$ вершины. Условие же (\ref{eq:cond_Ore_path}) означает, что у нас существует $(n-1)$ вершина, смежная или с $x$, или с $y$. Следовательно, мы не сможем разбить множество из $(n-2)$-х вершин на два подмножества так, чтобы вершины одного подмножества были бы смежными только с вершиной $x$, а вершины другого подмножества были бы смежными только с вершиной $y$ --- согласно принципу Дирихле, среди этих вершин обязательно найдется вершина, смежная как с $x$, так и с $y$. Таким образом, любая пара несмежных вершин связанна, то есть граф $G$ связен.

Теперь предположим, что у нас выполнено условие (\ref{eq:cond_Ore_path}), а гамильтонов путь в графе $G$ не существует. Это означает, что любой максимально возможный простой путь $P$ в графе содержит $k<n$ вершин. Так как в любом связном графе $G$, построенном на $n\geq 3$ вершинах, любые две несмежные вершины являются связанными, то в любом таком графе обязательно существует простой путь, содержащий хотя бы три вершины. Как следствие, количество $k$ вершин в рассматриваемом нами пути $P$ заведомо больше двух. Тогда, согласно следствию \ref{conseq:path_length}, в графе существует простой цикл длины $k$.  

Так как $k<n$ и граф $G$ связен, то в $G$ обязана существовать вершина $z$, не входящая в цикл $C$ и смежная хотя бы с одной из вершин $x$ этого цикла. Но в таком случае мы всегда можем построить в графе $G$ простой путь $y,x\equiv x_1,x_2,\ldots,x_k$, где $x_1,\ldots,x_k$ --- это вершины, принадлежащие циклу $C$. Длина этого пути на единицу больше длины пути $P$, что противоречит предположению о максимальности $P$. Полученное противоречие доказывает теорему.  \qed

\mysubitem Сформулируем теперь несколько очевидных следствий из теоремы Оре.  

\begin{conseq} 
Пусть $G$ --- граф, построенный на $n>2$ вершинах. Если для любой пары несмежных вершин выполняется условие 
\begin{equation}
\label{eq:cond_Ore_cycle}
\deg(x)+\deg(y)\geq n,
\end{equation} 
то в графе $G$ имеется гамильтонов цикл.
\end{conseq}

\evidp Действительно, в силу теоремы Оре, в таком графе обязан существовать гамильтонов путь $P=x_1,\ldots,x_n$. Согласно следствию \ref{conseq:path_length}, его всегда можно превратить в гамильтонов цикл. \qed

\begin{conseq}[Дирак]
Пусть $G$ --- простой граф на $n>2$ вершинах. Если степень каждой из его вершин больше или равна $(n-1)/2$, то в графе существует гамильтонов путь, а если больше или равна $n/2$ --- то в нем существует и гамильтонов цикл.   
\end{conseq}

\mysubitem Исторически первым достаточным условием существования гамильтонова цикла в графе была теорема Дирака, доказанная им в 1952 году. Эта теорема явилась отправной точкой для получения целого ряда все более и более слабых условий на степени вершин графа, достаточных для существования гамильтонового цикла в нем. Теорема Оре, доказанная в 1960 году, была одним из наиболее важных результатов на этом пути. Еще одно важное с практической точки зрения достаточное условие получил Вацлав Хватал в 1972 году (смотри упражение \ref{exerc:Chvatal_72}). Наконец, в 1974 году Вацлав Хватал и Джон Бонди доказали теорему \ref{theor:Bondy_Chvatal} о так называемом замыкании гамильтонова графа (смотри упражнения \ref{exerc:Chvatal_1}--\ref{exerc:Chvatal_3}), являющуюся на сегодняшний момент наиболее сильным достаточным условием существования гамильтонова цикла в простом графе. 


\myitem Как мы уже упоминали, эйлеровы и гамильтоновы графы встречаются в самых разнообразных практических задачах. В качестве очень красивого и полезного примера остановимся на одной из таких задач --- задаче о последовательностях де Брейна.

\mysubitem  Формальная постановка задачи такова: найти наименьшую циклическую последовательность (циклическое слово) над алфавитом из $n$ букв, содержащую все возможные подстроки длины $k$ (так называемые $k$-меры). 

\begin{figure}[h]
\centering
\includegraphics[scale=0.5]{pics/cyclic_sequence.eps}
\caption{Циклическая последовательность $B(2,3)$}
\label{fig:cycl_seq}
\end{figure}

\begin{examp}\label{examp:2_3_mers}
Рассмотрим циклические последовательности над алфавитом из двух букв --- чисел $0$ и $1$, содержащие все возможные подпоследовательности длины три (тримеры). Таковых, как мы знаем, существует $2^3=8$ штук --- восемь первых чисел в двоичной системе исчисления:
$$
000,\quad 001,\quad 010,\quad 011,\quad 100,\quad 101,\quad 110,\quad 111.
$$
Расставляя их по кругу, мы, конечно же, получаем циклическую последовательность, состоящую из $k\cdot n^k=3\cdot 2^3=24$ символов и содержащую все возможные тримеры. Однако такое слово минимальным не будет --- несложно видеть, что изображенная на рис.\ref{fig:cycl_seq} циклическая последовательность длины $2^3=8$ содержит все тримеры, причем каждый из них она содержит по одному разу. Понятно, что циклическую последовательность длины меньшей, чем $2^3$, построить невозможно --- она не сможет содержать все $8$ тримеров. Поэтому показанная на рис.\ref{fig:cycl_seq} циклическая последовательность минимальна. 
\end{examp}

Проведенные в примере \ref{examp:2_3_mers} рассуждения позволяют предположить, что и в общем случае для произвольных $n$ и $k$ минимальная циклическая последовательность над алфавитом из $n$ букв, содержащая все $n^k$ возможных $k$-меров, также имеет длину $n^k$. В этой связи возникают сразу три вопроса --- как доказать это предположение, как понять, сколько таких минимальных строк существует, ну и наконец, как их всех найти.

На все эти вопросы дал ответ Николас де Брейн в своей работе \cite{de_Bruijn_paper} 1946 года. Во-первых, он доказал, что действительно для произвольных $n$ и $k$ существуют циклические последовательности длины $n^k$ над алфавитом из $n$ букв, содержащие все возможные $k$-меры --- в его честь такие циклические последовательности называют теперь \emph{последовательностями де Брейна} $B(n,k)$ порядка $k$. Во-вторых, он подсчитал количество таких последовательностей. Наконец, он указал конструктивный алгоритм построения этих последовательностей. И сделал он это, построив для заданных $n$ и $k$ некоторый орграф специального вида. 


\begin{figure}[h]
\centering
\includegraphics[scale=0.5]{pics/hamiltonian_kmers.eps}
\caption{Построение циклической последовательности с помощью гамильтонова цикла в графе}
\label{fig:ham_cycl_seq}
\end{figure}


\mysubitem Итак, попытаемся, вслед за де Брейном, сопоставить множеству всевозможных $k$-меров над алфавитом из $n$ букв некоторый орграф $D$, обход которого даст нам какую-то циклическую последовательность $B(n,k)$ длины $n^k$. Как правило, первое, что приходит в голову при анализе этой задачи, это взять в качестве вершин будущего графа все $k$-меры, и соединить любые две вершины направленным ребром в том случае, если $(k-1)$-мер, отвечающий суффиксу первой вершины, совпадает с $(k-1)$-мером, соответствующим префиксу второй. 

Так, на рис.\ref{fig:ham_cycl_seq} показан орграф, построенный с помощью этого алгоритма для разобранного выше примера \ref{examp:2_3_mers}. В этом орграфе, к примеру, вершина $011$ соединена с вершиной $110$ ребром потому, что суффикс первой из них --- $2$-мер $11$ --- совпадает с префиксом второй. 

Заметим теперь, что обход этого орграфа по простому циклу, содержащему все вершины (помеченный жирными стрелками на рис.\ref{fig:ham_cycl_seq} цикл), позволяет построить одну из искомых нами циклических последовательностей $B(2,3)$, а именно, последовательность $11101000$. Тот же факт справедлив и в общем случае. Иными словами, при таком подходе задача поиска циклической последовательности $B(n,k)$ сводится к построению гамильтонова цикла в орграфе $D$. 


\mysubitem На первый взгляд кажется, что мы решили поставленную задачу --- действительно, нам удалось формализовать задачу поиска последовательностей де Брейна на языке теории графов. Однако у такого решения имеется множество недостатков. Во-первых, априори совсем не очевидно, что гамильтонов цикл у любого такого графа существует. Во-вторых, даже если он и существует, то непонятно, как его там искать --- как мы знаем, задача построения гамильтонова цикла весьма нетривиальна. Наконец, если такие циклы и существуют, то не ясно, как подсчитать их количество. 

Основное достижение де Брейна состояло в том, что он предложил другой, далеко не столь очевидный, подход к формализации данной задачи. Как показал де Брейн, эту задачу можно изящно переформулировать, сведя ее к к сравнительно легко решаемой задаче построения эйлерова цикла в орграфе специального вида --- графе де Брейна. 

\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{pics/de_Brujin_2_3.eps}
\caption{Граф де Брейна для $n=2$, $k=3$}
\label{fig:de_Brujin_graph_2_3}
\end{figure}

Алгоритм построения графа де Брейна следующий: возьмем в качестве вершин орграфа вместо $k$-меров все возможные $(k-1)$-меры (их, очевидно, $n^{(k-1)}$ штук) и свяжем любые две из них ориентированным ребром в случае, если существует $k$-мер, префиксом которого является первая вершина, а суффиксом --- вторая. 

На рис.\ref{fig:de_Brujin_graph_2_3} показан граф де Брейна, построенный для данных из примера \ref{examp:2_3_mers}. Так как существуют тримеры $010$ и $011$, то вершина $01$ соединена в этом графе с вершинами $10$ и $11$. Двум входящим в эту вершину ребрам отвечают тримеры $101$ и $001$. Так как к любому $2$-меру можно двумя способами слева приписать единицу или ноль, и справа приписать единицу и ноль, то аналогичный факт справедлив и для любой другой вершины --- в любую вершину входят ровно $n=2$ ребра и выходят из этой вершины также ровно $n=2$ ребра. Как следствие, в таком орграфе обязательно существует эйлеров цикл. Обход графа по эйлерову циклу $000$, $001$, $010$, $101$, $011$, $111$, $110$, $100$ позволяет восстановить искомую циклическую последовательность $B(2,3)=00010111$.  

Аналогичные рассуждения проходят и в общем случае. Следовательно, любой граф де Брейна является эйлеровым, а любой эйлеров цикл в нем отвечает некоторой последовательности де Брейна $B(n,k)$. 

Итак, построив для любых $n$ и $k$ граф де Брейна, мы доказали существование соответствующей последовательности де Брейна. Далее, используя алгоритмы поиска эйлеровых циклов в орграфе, мы можем находить такие последовательности. Осталось понять, сколько всего таковых последовательностей существует. Де Брейн ответил и на этот вопрос, доказав, что их количество равно $(n!)^{n^{k-1}}/n^k$. Два различных доказательства этого результата --- комбинаторное и алгебраическое --- можно найти, например, в учебнике \cite{van_Lint}.

\mysubitem Как это часто бывает в прикладной математике, задача, очень похожая на рассмотренную выше, возникла относительно недавно еще в одной, достаточно молодой области прикладной математики --- в биоинформатике \cite{Pevzner_de_Bruijn}. Одной из наиболее актуальных задач в этой науке является задача ассемблирования (сборки) геномов из так называемых ридов (reads) --- относительно коротких (содержащих порядка $100$ символов --- нуклеотидов) строк над $4$-буквенным алфавитом $\{\text{A,C,G,T}\},$ получаемых в результате секвенирования (разделения) генома (а точнее, очень большого количества одинаковых геномов). Первые методы сборки генома из таких ридов как раз и базировались на построении графа, вершинам которого сопоставлялись риды, а ребрам --- перекрытия между этими ридами фиксированной длины. При этом исходный геном восстанавливался с помощью построения гамильтонова цикла в подобном графе. 

\begin{figure}[h]
\centering
\includegraphics[scale=1.0]{pics/genome.eps}
\caption{Сборка простейшего генома}
\label{fig:genome}
\end{figure}

Рассмотрим в качестве простейшего примера очень короткий циклический геном, показанный на рис.\ref{fig:genome},a. Предположим, что в результате секвенирования мы получили из него пять ридов CGTGCAA, ATGGCGT, CAATGGC, GGCGTGC и TGCAATG длины $7$. Соответствующий этой последовательности ридов граф показан на рис.\ref{fig:genome},b. Каждому из пяти ридов поставлена в соответствие одна из вершин этого графа. Две вершины соединяются ребром в случае, если ширина перекрытия соответствующих ридов составляет пять нуклеотидов (см. рис.\ref{fig:genome},b). Проход по гамильтонову циклу 
$$
\text{ATGGCGT} \to \text{GGCGTGC} \to \text{CGTGCAA} \to \text{TGCAATG} \to \text{CAATGGC} \to \text{ATGGCGT}
$$
позволяет путем объединения первых двух нуклеотидов в каждом риде восстановить исходный геном ATGGCGTGCA.

Более современные методы сборки геномов обычно работают со строками определенной длины $k$ (которые как раз и называются $k$-мерами), значительно более короткими, нежели исходные риды. Например, типичный $100$-нуклеотидный рид разбивается вначале на $55$-меры, длина перекрывающихся участков которых равна сорока шести. В нашем модельном примере каждый $7$-нуклеотидный рид разбивается на пять $3$-меров, перекрывающихся между собой по двум нуклеотидам (см. рис.\ref{fig:genome},c,d). Даже для этого примера найти соответствующий исходному геному гамильтонов цикл нелегко. В реальной же ситуации из одного генома в процессе секвенирования получают миллионы $(10^6)$ ридов, триллионы $(10^{12})$ $k$-меров, то есть графы с огромным количеством вершин. Задача поиска гамильтонова цикла в таком графе практически нерешаема. 

Павел Певзнер в 1989 году предложил для таких случаев использовать подход де Брейна. Переход от задачи поиска гамильтонова цикла в графе (рис.\ref{fig:genome},c) к задаче поиска эйлерова цикла (рис.\ref{fig:genome},d) существенным образом ускорил процесс ассемблирования геномов и стал общепринятым в большинстве современных ассемблеров, предназначенных для сборки генома из коротких ридов.





\section*{Упражнения}

\begin{exerc} \label{exerc:k_eul_path}
Пусть в связном графе $G$ ровно $2k$ вершин имеют нечетную степень. Доказать, что в этом графе можно построить $k$ таких путей, что каждое ребро графа $G$ будет принадлежать только одному из этих путей. 
\end{exerc}

\begin{exerc} 
Имеется кусок проволоки длиной $12$ сантиметров. На какое минимальное количество кусков его следует разрезать, чтобы из этих кусков можно было бы изготовить каркас кубика размерами $1\times 1\times 1$ при условии, что проволоку в процессе изготовления кубиков можно сгибать?
\end{exerc}

\begin{exerc} 
Рассмотрим квадратную сетку, состоящую из $5\cdot 5=25$ вершин, соединенных между собой двадцатью ребрами. Можно ли покрыть эту сетку пятью ломаными длины $8$? А восемью ломаными длины $5$?
\end{exerc}

\begin{exerc} 
Рассмотрим связный простой регулярный граф $G$, степень любой вершины которого равна четырем. Доказать, что ребра этого графа всегда можно покрасить в два цвета (красный и синий) так, чтобы любая вершина была инцидентна ровно двум синим и ровно двум красным ребрам. 
\end{exerc}

\begin{exerc} \label{exerc:num_Ham_cycl_comp_gr}
Доказать, что количество гамильтоновых циклов в полном графе $K_n$, построенном на $n>2$ вершинах, равно $(n-1)!/2$. 
\end{exerc}

\begin{exerc}
Предъявить пример графа, имеющего эйлеров цикл и не имеющего гамильтонова цикла. 
\end{exerc}

\begin{exerc}
Предъявить пример графа, имеющего гамильтонов цикл и не имеющего эйлерова цикла. 
\end{exerc}

\begin{exerc}
Предъявить пример графа, в котором существует гамильтонов путь, но не существует гамильтонова цикла. 
\end{exerc}


\begin{figure}[h]
\centering
\includegraphics[scale=1.0]{pics/triangle_graph.eps}
\caption{}
\label{fig:triangle_graph}
\end{figure}


\begin{exerc}
Доказать, что в графе, изображенном на рис.\ref{fig:triangle_graph}, гамильтонов цикл не существует. 
\end{exerc}


\begin{exerc}\label{exerc:ness_cond_Ham_cycle}
Пусть в графе $G$ имеется гамильтонов цикл. Доказать, что количество $c(G-S)$ компонент связности, получающихся в результате удаления вершин из некоторого непустого подмножества $S\subset V(G)$ вершин графа, не превосходит количества удаленных вершин:
\begin{equation}
\label{eq:ness_cond_Ham_cycle}
c(G-S)\leq |S|.
\end{equation}
Как следствие, для существования гамильтонова цикла в графе $G$ необходимо, чтобы для любого подмножества вершин $S\subset V(G)$ выполнялось неравенство (\ref{eq:ness_cond_Ham_cycle}).
\end{exerc}

\begin{figure}[h]
\centering

\begin{tabular}[t]{ccc}

		\begin{subfigure}[b]{0.25\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/non-hamiltonian.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.25\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/herschel.eps}
 	\caption{}
	\end{subfigure}
	
	\begin{subfigure}[b]{0.25\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/three_triangles.eps}
 	\caption{}
	\end{subfigure}
	
\end{tabular}
\caption{}
\label{fig:non-hamiltonian}
\end{figure}


\begin{exerc}\label{exerc:examp_use_ness_cond} 
Используя сформулированные в предыдущем упражнении необходимые условия существования гамильтонова цикла в графе, докажите, что в графах, изображенных на рис. \ref{fig:non-hamiltonian}, гамильтоновых циклов не существует. 
\end{exerc}


\begin{exerc}
Доказать, что в графе Петерсена (смотри рис.\ref{fig:peterson}) гамильтонов цикл не существует. 
\end{exerc}

\begin{exerc}
Возможно ли удалить в графе Петерсена ребра так, чтобы в полученном в результате удаления этих ребер графе $G$ существовал эйлеров цикл? 
\end{exerc}

\begin{exerc} \label{exerc:Chvatal_72}
Доказать следующее утверждение.

\begin{theor}[V. Chv\'atal, 1972]\label{theor:Chvatal_72}
Пусть $G$ есть простой граф, построенный на $n>2$ вершинах. Рассмотрим упорядоченную по неубыванию последовательность $(d_1,\ldots,d_n)$ степеней $d_i:=\deg(x_i)$ вершин графа $G$. Предположим, что не существует индекса $i<n/2$, для которого одновременно выполняются неравенства $d_i\leq i$ и $d_{n-i}< (n-i)$. Тогда в $G$ существует гамильтонов цикл.
\end{theor} 
\end{exerc}

\begin{exerc} \label{exerc:Chvatal_1}
Пусть для некоторой пары несмежных вершин $x$ и $y$ в простом графе $G$ выполняется неравенство
$$
\deg(x)+\deg(y)\geq n=|V(G)|>2.
$$ 
Доказать, что в графе $G$ существует гамильтонов цикл тогда и только тогда, когда он существует в графе $G+\{x,y\}$. 
\end{exerc}

\begin{exerc} \label{exerc:Chvatal_2}
Рассмотрим произвольный простой граф $G$ на $n$ вершинах. Соединим все несмежные вершины $x,y$, для которых выполняется условие (\ref{eq:cond_Ore_cycle}), ребрами. Полученный в результате граф $C(G)$ называется \emph{замыканием} графа $G$. Доказать, что замыкание $C(G)$ графа $G$ определено однозначно, то есть не зависит от порядка добавления ребер.
\end{exerc}

\begin{exerc} \label{exerc:Chvatal_3}
Непосредственным следствием упражнений \ref{exerc:Chvatal_1} и \ref{exerc:Chvatal_2} является следующий результат.

\begin{theor}[J. Bondy, V. Chv\'atal, 1974]\label{theor:Bondy_Chvatal}
В простом графе $G$ существует гамильтонов цикл тогда и только тогда, когда он существует в графе $C(G)$. 
\end{theor}

Показать, что теоремы Дирака и Оре являются непосредственными следствиями данного утверждения.  
\end{exerc}

\begin{exerc}
Построить для значений $n=2$, $k=4$ граф де Брейна и с его помощью найти хотя бы одну последовательность де Брейна $B(2,4)$. 
\end{exerc}

\begin{exerc}
Мы знаем, что существуют две последовательности де Брейна $B(2,3)$, а именно, бинарные циклические последовательности
$$
00010111\qquad \text{и}\qquad 11101000,
$$
в каждой из которых любой возможный $3$-мер встречается ровно один раз в виде подпоследовательности $a_ia_{i+1}a_{i+2}$. Доказать, что не существует бинарной циклической последовательности, состоящей из восьми символов, которая бы ровно один раз содержала любой из восьми возможных тримеров в качестве подпоследовательности вида $a_ia_{i+1}a_{i+3}$. 
\end{exerc}


\section*{Решение упражнений}

\begin{sol_exerc}
Соединим $2k$ вершин с нечетными номерами попарно $k$ ребрами. В результате получим граф, в котором существует эйлеров цикл. Если удалить из этого цикла $k$ ребер, то цикл распадется на $k$ непересекающихся по ребрам путей, которые нам и нужно было построить.  
\end{sol_exerc}

\begin{sol_exerc}
Каркас куба представляет собой регулярный граф, степени всех восьми вершин которого равны трем. Так как их четное число, то, согласно упражнению \ref{exerc:k_eul_path}, этот граф можно разбить на четыре непересекающихся по ребрам пути. Как следствие, минимальное количество кусков, на которое можно разрезать проволоку для получения кубика единичного объема, также равно четырем.  
\end{sol_exerc}

\begin{sol_exerc}
В рассматриваемом графе имеется $12$ вершин нечетной степени. Следовательно, согласно упражнению \ref{exerc:k_eul_path}, этот граф можно покрыть как минимум шестью непересекающимися по ребрам путями. Пятью ломаными этот граф покрыть нельзя.  
\end{sol_exerc}

\begin{sol_exerc}
Для данного графа $G$ выполнены необходимые и достаточные условия существования эйлерова цикла в графе. Будем двигаться по любому такому циклу, окрашивая, например, любое ребро, по которому мы входим в заданную вершину, в синий цвет, а ребро, по которому мы из нее выходим, в красный. Так мы сможем окрасить все вершины графа $G$, за исключением начальной вершины $x_0$. При этом в каждую из этих вершин мы входим два раза и выходим из нее два раза. Поэтому все ребра, инцидентные этим вершинам, будут окрашены правильно. 

В вершину $x_0$ мы входим и сразу из нее выходим только один раз. Кроме того, мы выходим из нее в начале нашего алгоритма и возвращаемся в нее в его конце. Для того, чтобы доказать, что начальное и конечное ребро будут в результате работы алгоритма окрашены в разные цвета, достаточно убедиться в том, что количество ребер в графе $G$ четно. А этот факт сразу следует из теоремы \ref{theor:first_th_gr}. Действительно, для $4$-регулярного графа сумма степеней всех вершин равна $4n$. Поэтому количество всех ребер этого графа равно $2n$. 
\end{sol_exerc}

\begin{sol_exerc}
Действительно, из любой произвольной вершины графа (например, из вершины $1$) мы можем $(n-1)$ способом пойти в соседнюю с ней вершину, оттуда --- $(n-2)$-мя способами в следующую вершину и так далее. Однако при этом у нас всегда будут получаться пары одинаковых циклов, которые мы будем проходить в двух различных направлениях. Следовательно, всего получается $(n-1)!/2$ различных циклов.
\end{sol_exerc}

\begin{sol_exerc}
Например, в качестве такого графа можно взять граф ``восьмерку'' (см. рис.), построенный на семи вершинах.  
\end{sol_exerc}

\begin{sol_exerc}
Простейший пример --- это граф $K_4$, в котором существуют три различных гамильтоновых цикла, а эйлерова цикла не существует. 
\end{sol_exerc}

\begin{sol_exerc}
В качестве такого графа можно взять, например, дерево, построенное на трех вершинах. Чуть более нетривиальный пример --- это граф, состоящий из простого цикла длины $3$, к одной из вершин которого добавлен лист.  
\end{sol_exerc}

\begin{sol_exerc}
Рассмотрим три вершины графа, имеющие степень два. Все они вместе с инцидентными им ребрами должны входить в гамильтонов цикл. Но это означает, что в гамильтонов цикл входят три ребра, инцидентные центральной вершине, а этого быть не может --- любая вершина должна входить в гамильтонов цикл только с двумя инцидентными ей ребрами.
\end{sol_exerc}

\begin{sol_exerc}
Действительно, начнем обход гамильтонова цикла в графе из произвольной вершины $x$ подмножества $S$. Входя в первую компоненту связности $U_1$ графа $G-S$ через вершину $s_1\in S$, мы обязаны выйти из нее через какую-то другую вершину $s_2\in S$. Иными словами, количество вершин подмножества $S$, через которые гамильтонов цикл входит в компоненты связности $U_i$, совпадает с количеством этих компонент связности. Следовательно, подмножество $S$ обязано содержать как минимум $c(G-S)$ вершин. 
\end{sol_exerc}


\begin{sol_exerc}
Для графа, изображенного на рис.\ref{fig:non-hamiltonian},a, рассмотрим подмножество $S \subset V$, состоящее из  крайней левой и крайней правой вершины. При удалении этих вершин граф распадается на три компоненты связности. Таким образом, $c(G-S) = 3 > 2 = |S|$. 

При удалении из графа, показанного на рис.\ref{fig:non-hamiltonian},b, центральной вершины и четырёх вершин, находящихся от неё на расстоянии $2$, образуется шесть компонент связности.

\begin{figure}[h]
\centering
\includegraphics[scale=0.5]{pics/three_triangles_2.eps}
\caption{}
\label{fig:three_triangles_2}
\end{figure}

Удалив три вершины в графе, изображенном на рис.\ref{fig:non-hamiltonian},c, так, как показано на рис.  \ref{fig:three_triangles_2}, получим граф, в котором четыре компоненты связности. 

Учитывая сформулированные в предыдущем упражнении необходимые условия существования гамильтонова цикла, заключаем, что гамильтоновы циклы в каждом из этих графов отсутствуют.

\end{sol_exerc}

\begin{sol_exerc}
Разобъем ребра графа Петерсона на три группы --- пять внешних ребер (ребра, соединяющие вершины $1-5$ на рис.\ref{fig:peterson_2} в простой цикл), пять внутренних ребер (ребра $\{1,7\}$, $\{2,8\}$, $\{3,9\}$, $\{4,10\}$ и $\{5,6\}$ на рис.\ref{fig:peterson_2}) и пять ребер, образующих в графе звезду. Любой гамильтонов цикл $C$ в графе должен вернуться в свою начальную вершину. Следовательно, в нем должно быть четное число внутренних ребер, а именно, два или четыре ребра. 

Предположим, что цикл $C$ содержит два внутренних ребра. Тогда он также должен содержать четыре внешних ребра и четыре из пяти ребер, образующих звезду. Иными словами, два ``внешних'' конца пары внутренних ребер соединены между собой путем длины $4$, и два ``внутренних'' конца этой пары ребер также соединены между собой путем длины $4$. Последнее же означает, что два ``внешних'' конца являются смежными, и два ``внутренних'' конца также являются смежными в графе $G$. Несложно понять, однако, что одновременное выполнение этих условий невозможно.

Теперь предположим, что $C$ содержит четыре внутренних ребра. Тогда должно существовать внутреннее ребро, не принадлежащее $C$. Пусть для определенности это есть ребро $\{4,10\}$ на рис.\ref{fig:peterson_2}. Так как цикл $C$ гамильтонов, то степень любой вершины в цикле $C$ должна быть равна двум. Как следствие, оба инцидентных вершине $4$ внешних ребра графа (ребра $\{4,3\}$ и $\{4,5\}$) должны принадлежать $C$, и оба инцидентных вершине $10$ ребра  $\{10,8\}$ и $\{10,7\}$ из числа ребер, образующих звезду, также должны принадлежать $C$. Кроме того, в цикл $C$ должны войти и четыре оставшихся внутренних ребра. Теперь видно, что дальнейшее построение цикла $C$ невозможно --- в таком цикле вершины $1$ и $6$, а также $2$ и $9$ должны быть соединены ребрами, а такие ребра в графе Петерсена отсутствуют. 
\end{sol_exerc}

\begin{sol_exerc}
Нет, это сделать невозможно. Действительно, в любом таком графе $G$ степени всех вершин должны быть четными. Так как в исходном графе Петерсена степень любой вершины равна трем, то в графе $G$ с эйлеровым циклом степени всех вершин должны равняться двум. Существование такого цикла в графе $G$, в свою очередь, равносильно существованию в исходном графе Петерсена гамильтонова цикла, а такой цикл, как мы уже знаем, в графе Петерсена не существует.  
\end{sol_exerc}

\begin{sol_exerc}
Предположим, что это не так, то есть предположим, что последовательность $(a_1,\ldots,a_n)$ не является гамильтоновой. Рассмотрим граф $G$ с максимальным числом ребер, в котором все еще отсутствует гамильтонов цикл, и степенная последовательность $(d_1,\ldots,d_n)$ которого мажорирует $(a_1,\ldots,a_n)$. В силу упражнения \ref{exerc:Chvatal_2}, этот граф совпадает со своим замыканием $C(G)$. Как следствие, сумма степеней любых двух несмежных вершин в этом графе меньше $n$.

Рассмотрим тогда две несмежные вершины $x$ и $y$, сумма $S:=\deg(x)+\deg(y)$ степеней вершин которых максимальна. Положим для определенности $i:=\deg(x)\leq \deg(y)$. Так как $S<n$, то $i<n/2$, а $\deg(y)<(n-i)$. 

Мы выбрали несмежную пару вершин с наибольшей суммой $S$. Поэтому любая несмежная с $y$ вершина имеет степень, меньшую или равную $\deg(x)=i$. Таких вершин в графе $G$ имеется $n-1-\deg(y)$, причем из неравенства $S\leq (n-1)$ следует, что количество этих вершин $n-1-\deg(y)\geq \deg(x)=i$. Иными словами, в графе $G$ гарантированно имеется $i$ вершин, степени которых меньше или равны $i$. Но $(d_1,\ldots,d_i,\ldots,d_n)$ есть последовательность степеней вершин $x_1,\ldots,x_n$, расположенная по неубыванию, поэтому мы доказали, что по крайней мере первые $i$ членов этой последовательности (т.е. числа $d_1,\ldots,d_i$) меньше или равны $i$.

Далее, любая несмежная с $x$ вершина имеет степень, меньшую или равную $\deg(y)<(n-i)$. Таких вершин имеется $n-1-\deg(x)=n-1-i$ штук. Кроме того, сама вершина $x$ имеет степень, меньшую или равную $(n-i)$. Поэтому мы можем добавить эту вершину к $(n-1-i)$ вершинам графа, степень которых меньше $(n-i)$. Иными словами, мы получили, что количество вершин, степень которых меньше $(n-i)$, равно $(n-i)$. Последнее, в свою очередь, означает, что все числа $d_1,\ldots,d_{n-i}$ меньше, чем $(n-i)$. 

Тем самым мы, в частности, доказали, что существует индекс $i$, для которого $a_i\leq d_i\leq i$ и $a_{n-i}\leq d_{n-i}<(n-i)$. Это, в свою очередь, противоречит основному свойству последовательности $(a_1,\ldots,a_n)$. 
\end{sol_exerc}

\begin{sol_exerc}
Очевидно, что доказать нужно лишь обратное утверждение. Пусть в графе $G+\{x,y\}$ существует гамильтонов цикл. Если он не проходит по ребру $\{x,y\}$, то все доказано. В противном случае в исходном графе $G$ существует гамильтонов путь с концами в точках $x$ и $y$, сумма степеней которых удовлетворяет неравенству (\ref{eq:cond_Ore_cycle}). Тогда, по лемме \ref{lemm:path_length}, в $G$ существует гамильтонов цикл. 
\end{sol_exerc}

\begin{sol_exerc}
 
\end{sol_exerc}

\begin{sol_exerc}
 
\end{sol_exerc}



\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{pics/de_Brujin.eps}
\caption{Граф де Брейна для $n=2$, $k=4$}
\label{fig:de_Brujin_graph}
\end{figure}

\begin{sol_exerc}
Граф де Брейна для значений $n=2$, $k=4$ изображен на рис.\ref{fig:de_Brujin_graph}. Синими стрелками на нем отмечен эйлеров цикл, соответствующий последовательности де Брейна 
$$
B(2,4)=0000110010111101.
$$
\end{sol_exerc}

\begin{sol_exerc}
Действительно, предположим, к примеру, что мы встретили $3$-мер $000$ на позициях $a_1,a_2,a_4$. Тогда $3$-мер $111$ может стоять только на позициях $a_5,a_6,a_8$. В итоге получили циклическую последовательность вида
$$
00*011*1.
$$
Но тогда, чтобы встретить, например, $3$-мер $101$, мы на позицию $a_2$ должны поставить $1$, а чтобы получить $3$-мер $001$, мы на ту же позицию обязаны поставить $0$. Получили противоречие.
\end{sol_exerc}



\section{Раскраски вершин и ребер графа. Хроматический многочлен} 

\myitem Начнем данный параграф с изучения так называемых двудольных графов.

\begin{defin}
Двудольным графом называется граф $G$, множество $V(G)$ вершин которого может быть разбито на два блока $X$ и $Y$ так, что любая вершина из множества $X$ может быть соединена ребрами только с вершинами из множества $Y$ и наоборот.  
\end{defin}

\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{pics/cube.eps}
\caption{}
\label{fig:cube}
\end{figure}


\mysubitem Простейшим примером двудольного графа является дерево (смотри упражнение \ref{exerc:tree_bipartide}). Еще одним простым примером двудольного графа является куб --- на рис.\ref{fig:cube} вершины куба, принадлежащие множеству $X$, окрашены в черный цвет, а вершины из множества $Y$ --- в белый. 

\begin{defin} 
Полным двудольным графом $K_{m,n}$ называется двудольный граф, в котором любая вершина из первого блока $X$, $|X|=m$, соединена с любой другой вершиной из второго блока $Y$, $|Y|=n$, и наоборот (смотри рис.\ref{fig:full_bipartite}). 
\end{defin}

\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{pics/full_bipartite.eps}
\caption{Полный двудольный граф $K_{3,4}$}
\label{fig:full_bipartite}
\end{figure}


\mysubitem Рассмотрим теперь граф $G=C_n$, представляющий собой простой цикл длины $n>2$. Очевидно, что такой граф является двудольным тогда и только тогда, когда $n=2i$, то есть когда $n$ является четным числом. Нечетный цикл двудольным не является.

Оказывается, отсутствие циклов нечетной длины в произвольном графе является необходимым и достаточным условием его двудольности. Именно, справедлива следующая теорема.  

\begin{theor} \label{theor:crit_bipart} 
Граф двудолен тогда и только тогда, когда он не содержит нечетных циклов.
\end{theor}

\evidp То, что в любом двудольном графе нечетные циклы отсутствуют, достаточно очевидно. Действительно, рассмотрим в двудольном графе $G$ произвольный цикл $x_1,x_2,\ldots,x_k,$ $x_1$ длины $k$, $k>2$. Пусть вершина $x_1$ принадлежит блоку $X$. Тогда вершины $x_2,x_4,\ldots$, то есть все вершины цикла с четными индексами, должны принадлежать блоку $Y$. Тому же самому блоку должна принадлежать и вершина $x_k$. Следовательно, $k=2i$ для некоторого $i>1$.

Предположим теперь, что в графе $G$ циклы нечетной длины отсутствуют. Выберем произвольную вершину $x\in V(G)$ графа и разобъем множество $V(G)$ вершин графа $G$ на два блока $X$ и $Y$ следующим образом: к блоку $Y$ отнесем все вершины $y\in V(G)$, для которых длина кратчайшего пути из $x$ в $y$ нечетна, а к блоку $X$ отнесем все оставшиеся вершины. В частности, сама вершина $x\in X$, а все смежные с ней вершины принадлежат подмножеству $Y$.

Докажем теперь, что любые две вершины $x',x''$ множества $X$ смежными не являются. Рассмотрим для этого произвольные кратчайшие пути $P$ и $Q$, соединяющие эти вершины с вершиной $x$. Обозначим через $z\in V(G)$ последнюю \emph{общую} вершину этих двух путей. Сразу заметим, что длины участков путей $P$ и $Q$ от точки $x$ до точки $z$ обязаны совпадать. Действительно, предположим, например, что длина участка $P'$ пути $P$ от точки $x$ до точки $z$ превосходит длину аналогичного участка $Q'$ пути $Q$. В этом случае мы можем заменить в пути $P$ участок $P'$ на участок $Q'$, и получить тем самым новый, более короткий путь из точки $x$ в точку $x'$. А это противоречит тому, что путь $P$ является кратчайшим. 

Итак, длины участков $P'$ и $Q'$ путей $P$ и $Q$ совпадают. Кроме того, так как $x'$ и $x''$ принадлежат блоку $X$, длины путей $P$ и $Q$ имеют одинаковую четность. Как следствие, участки путей $P$ и $Q$ от точки $z$ до точек $x'$ и $x''$ также имеют длины одинаковой четности и не имеют никаких других общих вершин, помимо $z$. Добавление к этим участкам путей $P$ и $Q$ ребра $e=\{x',x''\}$ приводит в образованию в $G$ цикла нечетной длины, чего быть не может. 

Аналогично доказывается, что и любые две вершины $y',y''\in Y$ смежными не являются. Следовательно, граф $G$ является двудольным. \qed

\begin{rem} 
Несложная модификация алгоритма поиска в глубину, описанного при доказательстве теоремы \ref{theor:simple_graph_n_ver_is_tree}, позволяет использовать этот алгоритм для проверки графа на двудольность. Именно, выберем произвольную вершину $x$ графа $G$ и окрасим ее в красный цвет. Затем выберем одну из смежных с ней вершин и окрасим ее в синий цвет, а ребро, соединившее эти две вершины, покрасим, например, в зеленый цвет. Будем продолжать данный процесс, выбирая в графе любую из еще неокрашенных вершин $y$, смежных с одной из уже окрашенных вершин $x$, красить ребро $\{x,y\}$ в зеленый цвет, а саму вершину $y$ --- в цвет (красный или синий), отличный от цвета вершины $x$. В результате работы данного алгоритма мы получим в графе $G$ остовное дерево с зелеными ребрами, вершины которого будут правильным образом окрашены в два цвета. Кроме того, в графе $G$ останется некоторое количество неокрашенных ребер. Все, что остается --- это проверить, что каждое из таких ребер соединяет вершины разных цветов. 

Более формальное описание данного алгоритма, равно как и его реализацию на языке C++, можно посмотреть, например, в книге \cite{Sedgewick_Alg_on_graphs}. 
\end{rem}


\myitem Оказывается, что двудольные графы есть частный случай так называемых $k$-раскра\-ши\-ва\-емых, а точнее, вершинно-$k$-раскрашиваемых графов.  

\mysubitem Под раскраской вершин графа $G$ понимается разбиение множества $V$ его вершин на блоки, называемые цветами. Задать такое разбиение можно, например, с помощью функции $\phi:\,V\to C$, отображающей множество $V$ вершин на некоторое множество $C=\{1,\ldots,k\}$, называемое множеством цветов.
 

\begin{defin} Раскраска вершин простого графа $G$ называется \emph{правильной,} если любые две смежные вершины графа окрашены в разные цвета. 
\end{defin}

\begin{defin} Наименьшее количество цветов, в которое можно правильно покрасить вершины графа $G$, называется \emph{хроматическим числом} $\chi(G)$ этого графа. 
\end{defin}

\begin{defin}
Граф называется $k$-раскрашиваемым, если его можно правильно окрасить в $k$ цветов, и $k$-хроматическим, если $\chi(G)=k$. 
\end{defin}

\begin{figure}[h]
\centering
\begin{tabular}[t]{ccc}
		\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/3col_1.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/3col_2.eps}
 	\caption{}
	\end{subfigure}	
\end{tabular}
\caption{3-хроматические графы}
\label{fig:3col}
\end{figure}

\begin{rem} Любой граф с петлями является $1$-хроматическим, поэтому такие графы мы можем не рассматривать. Кроме того, наличие нескольких ребер между одной и той же парой вершин на раскрашиваемость вершин никак не влияет. Поэтому в вопросах окраски вершин мы можем ограничиться простыми графами. 
\end{rem}

\mysubitem Понятно, что простой граф $G$ является $1$-раскрашиваемым тогда и только тогда, когда $G$ представляет собой пустой граф $\bar{K}_n$, и $2$-раскрашиваемым тогда и только тогда, когда он двудольный. Любой простой цикл нечетной длины является простейшим примером $3$-хроматического графа (смотри рис.\ref{fig:3col},a). Еще один пример $3$-хроматического графа показан на рис.\ref{fig:3col},b. В упражнении \ref{exerc:3col_b} предлагается дать строгое доказательство данного факта.  

Очевидно, что хроматическое число любого графа, построенного на $n$ вершинах, ограничено сверху значением $n$. Эта верхняя граница достигается, например, на полном графе. Действительно, так как любые две его вершины соединены ребром, то никакие две вершины $K_n$ нельзя окрасить в один и тот же цвет. Следовательно, хроматическое число полного графа $\chi(K_n)=n$. 

\mysubitem Задачи, связанные с правильной окраской вершин графа $G$ в как можно меньшее количество цветов, достаточно часто встречаются на практике. Приведем несколько характерных примеров такого рода задач \cite{Bondy_Murty_old,Bondy_Murty_new}.

\begin{examp}
Предположим, что студенты в некотором университете учатся по индивидуальным программам и сдают в конце года экзамены по всем предметам, которые они изучали в течение года. Учебный отдел должен так составить расписание экзаменов, чтобы экзамены, на которые должен прийти один и тот же студент, стояли в разные дни. При этом расписание хочется составить так, чтобы количество экзаменационных дней было бы минимальным. 

Для формализации данной задачи рассмотрим граф $G$, множество вершин которого совпадает с множеством читаемых в университете курсов. Соединим две вершины ребром в случае, если хотя бы один студент слушает оба эти курса. Тогда любая правильная раскраска вершин графа $G$ даст нам бесконфликтное расписание, а хроматическое число графа $G$ определит нам минимальное количество экзаменационных дней. 
\end{examp}

\begin{examp}
Химическая компания производит набор $X=\{x_1,\ldots,x_n\}$ химикатов. Некоторые пары этих химикатов взрываются, если приходят в контакт друг с другом. В качестве меры предосторожности компания делит свой склад на отсеки, помещая в каждый отсек лишь те препараты, которые не взрываются при контакте друг с другом. Задача состоит в нахождении минимального количества отсеков для данного набора химических веществ.

Для решения данной задачи построим граф $G$ на $n$ вершинах, помеченных элементами множества $X$. Соединим любые две вершины графа ребром в случае, если соответствующие этим вершинам химикаты взрываются при контакте друг с другом. Тогда минимальное количество отсеков, на которые следует разделить склад, совпадает с хроматическим числом $\chi(G)$ графа.
\end{examp}

\mysubitem Любую задачу, связанную с раскраской вершин графа, можно разбить на две подзадачи. Первая подзадача состоит в проверке данного графа $G$ на $k$-раскрашиваемость, вторая --- в определении хроматического числа $\chi(G)$ графа $G$. Уточним еще раз постановку первой, более простой подзадачи.

Рассмотрим $n$-элементное множество вершин графа $G$. Как мы знаем, общее количество способов разбить это множество на блоки описывается числами Белла $B_n$, а количество способов разбить его ровно на $k$ блоков --- числами Стирлинга второго рода $S(n,k)$. Нас среди всех $B_n$ разбиений интересуют \emph{правильные,} то есть такие разбиения, в которых любые две смежные вершины принадлежат разным блокам. Подзадачу проверки графа $G$ на $k$-раскрашиваемость можно тогда сформулировать так: определить, существует ли среди всех $S(n,k)$ разбиений множества $V(G)$ вершин данного графа на $k$ блоков, $k\in[1,n]$, хотя бы одно правильное.  

Оказывается, данная подзадача достаточно просто решается только для случая $k=2$: теорема \ref{theor:crit_bipart} дает достаточно простой и удобный для практики критерий $2$-раскрашиваемости графа. Однако уже подзадача проверки графа $G$ на $3$-раскрашиваемость является $NP$-полной задачей. Как следствие, подзадача определения хроматического числа графа $NP$-сложна. В частности, не существует никакого алгоритма, работающего за полиномиальное время и позволяющего для произвольно взятого графа определить его хроматическое число.

В этой связи на практике довольствуются обычно какими-то эвристическими алгоритмами, позволяющими  более или менее эффективно определить верхнюю границу хроматического числа $\chi(G)$. Опишем наиболее очевидный и популярный из них --- так называемый жадный алгоритм окраски вершин графа цветами из множества $Y=\{1,\ldots,n\}$:

\begin{description}
\item[1-й шаг:] линейно упорядочить множество $X=\{x_1,x_2,\ldots,x_n\}$ вершин графа $G$;
\item[2-й шаг:] красить вершины графа в порядке, установленном на первом шаге алгоритма, приписывая вершине $x_i$ цвет $y_i\in Y$, равный минимальному из элементов множества $Y$, не использованных при окраске вершин с меньшими номерами, смежными с $x_i$. 
\end{description} 

Данный алгоритм далеко не всегда работает оптимально и может очень сильно зависеть от способа линейного упорядочивания вершин (смотри, например, упражнение \ref{exerc:greedy_col_alg}). Несмотря на это, максимальное количество использованных в данном алгоритме цветов никогда не превысит величины $\Delta+1$, где $\Delta$ --- максимальная из степеней вершин графа $G$. 

Действительно, в жадном алгоритме для любой вершины $x_i$ количество уже использованных цветов, в которые нельзя окрасить вершину $x_i$, никогда не превысит величины $\deg(x_i)\leq \Delta$. Следовательно, для окраски самой вершины $x_i$ мы обязательно сможем использовать хотя бы один цвет из списка $\{1,2,\ldots,\Delta+1\}$. 


\mysubitem Проведенные выше рассуждения доказывают, в частности, следующий важный результат.  

\begin{theor} \label{d_chrom} 
Если наибольшая из степеней вершин графа $G$ равна $\Delta$, то $G$ является $(\Delta+1)$-раскрашиваемым.
\end{theor}

\begin{conseq}
Любой $k$-хроматический граф обязательно содержит по-крайней мере одну вершину степени $k-1$.
\end{conseq}


\mysubitem Полученная выше верхняя оценка на хроматическое число графа неулучшаема для полного графа $K_n$, а также для простого цикла $C_n$ нечетной длины $n=2i+1$. Во всех остальных случаях эту оценку можно уменьшить, но только лишь на единицу. Именно, справедлива следующая 

\begin{theor}[Brooks, 1941] Пусть $G$ есть простой граф, не являющийся полным графом или же простым нечетным циклом. Тогда
$$
\chi(G)\leq \Delta(G),\qquad \text{где}\qquad \Delta(G)=\max\limits_{x_i\in V(G)}\deg(x_i).
$$  
\end{theor}

\evidp Так как хроматическое число несвязного графа совпадает с максимальным хроматическим числом одной из компонент его связности, то теорему достаточно доказать лишь для связных графов. 

Пусть, таким образом, $G$ есть связный простой граф с $\Delta=k$. Мы можем считать, что $k\geq 3$, так как случай $k=1$ отвечает элементарному полному графу $K_1$, а случай $k=2$ соответствует либо нечетному циклу, который мы также, как и полный граф, исключили из рассмотрения, либо двудольному графу, для которого теорема верна.  

Основная идея доказательства состоит в следующем \cite{Lovasz_paper_3_proovs,West}: нам нужно так упорядочить вершины графа, чтобы любая вершина $x_i$ имела не более $(k-1)$-й смежной вершины с меньшими, чем у $x_i$, индексами. При таком упорядочивании жадный алгоритм использует для окраски вершин не более, чем $k$ цветов.

Достаточно очевидно, что упорядочить таким образом \emph{все} вершины графа мы можем лишь в случае, когда граф не является $k$-регулярным (смотри упражнения \ref{exerc:th_Brooks_0} и \ref{exerc:th_Brooks_1}). К задаче о раскраске графа, не являющегося $k$-регулярным, можно также свести задачу о раскраске $k$-регулярного графа, имеющего точку сочленения $x$ (смотри упражнение \ref{exerc:th_Brooks_2}). Для случая же $k$-регулярного графа без точек сочленения максимум, чего мы можем добиться --- это упорядочить таким образом только первые $(n-1)$ вершин нашего графа (смотри упражнение  \ref{exerc:th_Brooks_2_5}). Последняя же вершина $x_n$ в списке при таком способе упорядочивания будет иметь ровно $k$ смежных вершин с меньшими индексами. Для того, чтобы жадный алгоритм окрасил вершины такого графа в не более чем $k$ цветов, нам необходимо, чтобы о крайней мере две смежные с $x_n$ вершины оказались покрашенными в один и тот же цвет. Оказывается, что это всегда можно сделать, выбрав в качестве $x_n$ вершину, имеющую пару соседних несмежных между собой вершин $x_1$ и $x_2$, таких, что граф $G-x_1-x_2$ остается связным (смотри упражнение \ref{exerc:th_Brooks_3}). В упражнении \ref{exerc:th_Brooks_4} предлагается доказать, что такая тройка вершин $x_1,x_2,x_n$ в двусвязном графе всегда существует. \qed 

\begin{rem}
Указанная в теореме Брукса верхняя оценка на $\chi(G)$ может быть, вообще говоря, сколь угодно далека от хроматического числа. Так, в дереве степень вершины может быть любой, тогда как хроматическое число $\chi(T)$ дерева $T$ равно двум.
\end{rem}

\mysubitem Помимо верхних оценок, для хроматического числа $\chi(G)$ можно пытаться строить и какие-то нижние оценки. Одна из наиболее очевидных нижних оценок связана с понятием кликового числа $\omega(G)$ графа $G$. 

\begin{defin} Кликой называется любой полный подграф $H$ графа $G$. Кликовым числом $\omega(G)$ графа $G$ называется количество вершин в наибольшей клике этого графа. 
\end{defin}

Очевидным является следующее 

\begin{propos} Хроматическое число $\chi(G)$ любого графа $G$ не может быть меньше его кликового числа:
$$
\chi(G)\geq \omega(G).
$$
\end{propos}

Отсюда, в частности, следует простой способ построения графа $G$ с большим хроматическим числом --- поместить в граф $G$ клику большого размера. Оказывается, однако, что граф с большим хроматическим числом вовсе не обязан иметь одновременно и большое кликовое число. 

Рассмотрим, к примеру, так называемые графы без треугольников, то есть графы, не содержащие простых циклов длины три. Заметим, что любой полный граф $K_n$, построенный на $n\geq 3$ вершинах, содержит в качестве своих подграфов клики $K_k$ любых размеров $k\in[1,\ldots,n-1]$, и, в частности, обязательно содержит треугольники $K_3$. Следовательно, графы без треугольников --- это графы с кликовым числом $\omega(G)\leq 2$, то есть графы, которые в качестве своих подграфов не содержат никаких клик помимо ребер $K_2$ и (или) вершин $K_1$.  

\begin{theor}[Mycielski, 1955] \label{theor:Mycielski}
Для любого натурального числа $k$ существует $k$-хрома\-ти\-чес\-кий граф без треугольников. 
\end{theor}

\evids данной теоремы основано на следующей конструкции, позволяющей получить из произвольного простого графа $G_k$ некоторый простой граф $G_{k+1}$, содержащий $G_k$ в качестве своего подграфа:

\begin{itemize}
\item[--] добавляем к множеству $V(G_k)=\{x_1,\ldots,x_n\}$ вершин графа $G_k$ вершины $Y=\{y_1,\ldots,y_n\}$, а также еще одну вершину $z$;
\item[--] для любого $i=1,\ldots,n$ соединяем ребрами вершину $y_i$ со всеми вершинами исходного графа $G_k$, смежными с $x_i$; 
\item[--] соединяем вершину $z$ со всеми вершинами множества $Y$. 
\end{itemize}

\begin{figure}[h]
\centering
\begin{tabular}[t]{ccc}
		\begin{subfigure}[b]{0.30\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/chromatic_1.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.30\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/chromatic_2.eps}
 	\caption{}
	\end{subfigure}	
	
	\begin{subfigure}[b]{0.30\textwidth}
	\centering
    		\includegraphics[scale=0.8]{pics/chromatic_3.eps}
 	\caption{}
	\end{subfigure}	
\end{tabular}
\caption{Графы без треугольников}
\label{fig:triangle_free}
\end{figure}


\begin{examp}
Рассмотрим в качестве примера $2$-хроматический граф $G_2=K_2$ (рис.\ref{fig:triangle_free},a). Первая итерация описанной выше конструкции получает получить из него $3$-хроматический граф $G_3=C_5$ (рис.\ref{fig:triangle_free},b). Следующая итерация, примененная к графу $C_5$, дает нам так называемый граф Грётцша $G_4$ (рис.\ref{fig:triangle_free},c).
\end{examp}

Покажем теперь по индукции, что граф Грётцша $G_4$, а также любые графы $G_{k+1}$, полученные в результате применения данной процедуры к графам $G_k$, являются $(k+1)$-хроматическими графами без треугольников. 

Заметим прежде всего, что граф $G_{k+1}$ не содержит никаких треугольников. Действительно, так как все вершины множества $Y$ несмежны друг с другом, то любой потенциальный треугольник в графе $G'$ может содержать лишь одну вершину из множества $Y$. Как следствие, вершину $z$ такой треугольник содержать уже не может. Поэтому единственный возможный вариант такого треугольника --- это простой цикл вида $x_iy_jx_kx_i$. Однако и это невозможно --- в противном случае в исходном графе $G_k$ существовал бы треугольник $x_ix_jx_kx_i$, чего быть не может по индукционному предположению. 

Теперь покажем, что граф $G_{k+1}$ является $(k+1)$-раскрашиваемым. Для этого рассмотрим произвольную правильную окраску графа $G_k$ в $k$ цветов и продолжим ее на граф $G_{k+1}$ следующим образом: окрасим вершины $y_i$ графа $G_{k+1}$ в те же цвета, что и вершины $x_i$, а вершину $z$ окрасим в цвет $(k+1)$. 

Осталось доказать, что граф $G_{k+1}$ не является $k$-раскрашиваемым. Предположим, что граф $G_{k+1}$ все же можно правильно окрасить в $k$ цветов. Без потери общности мы можем считать, что вершина $z$ окрашена в цвет $k$. При таком способе окраски никакая вершина множества $Y$ не может быть окрашена в этот же цвет $k$. Перекрасим теперь каждую из вершин $x_i$ графа $G_k$ в тот же цвет, в какой окрашена вершина $y_i$. Так как множество смежных с $x_i$ вершин совпадает для любого $i$ с множеством вершин, смежных с $y_i$, то такой способ окраски графа $G_k$ будет правильным. Однако этот способ окраски требует лишь $(k-1)$ цветов, что противоречит индукционному предположению. \qed

\mysubitem Итак, любой $k$-хроматический граф $G_k$, построенный на $n\geq 4$ вершинах с помощью описанной в теореме \ref{theor:Mycielski} процедуры, содержит простые циклы длины $l>3$. Может показаться, что для существования графов без треугольников с достаточно большим хроматическим числом необходимо, чтобы в этом графе существовало достаточно большое количество простых циклов не слишком большой длины. Однако и это предположение оказывается неверным.

\begin{defin}
Обхватом графа $G$ называется длина наименьшего простого цикла в нем.
\end{defin} 

Очевидно, что у любого графа без треугольников обхват строго больше трех. 

\begin{theor}[Erdos, 1961]
Для любого натурального $k$ существует $k$-хроматический граф, обхват которого больше или равен $k$. 
\end{theor}

Эрдёш доказал эту теорему с помощью вероятностных методов. Его доказательство было неконструктивным: он лишь показал, что подобные графы существуют. Несколько лет спустя появились работы, в которых были предложены и конструктивные алгоритмы построения подобного рода графов. 

\mysubitem Итак, большое хроматическое число еще не означает, что в графе существуют клики больших размеров. Однако имеются целые классы чрезвычайно важных на практике графов, для которых числа $\omega(G)$ и  $\chi(G)$ все же совпадают:
$$
\omega(G)=\chi(G)=k.
$$
Конечно же, можно построить любое количество таких графов, рассматривая граф, одной из компонент связности которого является $k$-хроматический граф, а другой --- полный граф $K_k$, у которого $\omega(K_k)=k$. Чтобы исключить подобного рода вырожденные конструкции, вводят понятие так называемого совершенного графа.

\begin{defin}
Граф $G$ называется \emph{совершенным,} если как для самого графа, так и \emph{для любого} его индуцированного подграфа $H$ хроматическое и кликовое числа совпадают.
\end{defin}

Ясно, что индуцированный подграф любого совершенного подграфа совершенен. Простейшими примерами совершенных графов являются полный граф $K_n$, а также двудольный граф. Еще один важный пример совершенных графов --- это так называемые интервальные графы, описанные в упражнении \ref{exerc:interval_graphs}. Важно заметить, что, в отличие от произвольных графов, задача проверки совершенных графов на $k$-раскрашиваемость может быть решена за полиномиальное время. 

В 1963 году Берж высказал две гипотезы о том, как устроены совершенные графы.

\begin{theor}[Слабая гипотеза Бержа] Граф совершенен тогда и только тогда, когда его дополнение $\bar G$ также является совершенным графом.
\end{theor}

\begin{theor}[Сильная гипотеза Бержа] Граф совершенен тогда и только тогда, когда ни $G$, ни его дополнение $\bar G$ не содержат в качестве индуцированного подграфа цикла нечетной длины, большей или равной пяти.
\end{theor}

Первая гипотеза была доказана Л.Ловасом в 1972 году, а вторая --- только в 2002 году.  

\myitem Перейдем теперь к так называемым \emph{реберным раскраскам} уже не обязательно простого графа $G$ в $k$ цветов.

\mysubitem Формальные определения здесь практически буквально перефразируют соответствующие определения в случае раскраски вершин. Так, правильная реберная раскраска --- это такая раскраска, при которой любые ребра, инцидентные одной и той же вершине, окрашены в разные цвета. Минимальное количество цветов, в которые можно правильно окрасить ребра графа $G$, называется реберным хроматическим числом $\chi'(G)$. 

\mysubitem В отличие от раскраски вершин, для $\chi'(G)$ существуют удивительно точные оценки. Именно, справедлива следующая теорема.

\begin{theor}[Визинг, 1964]
Пусть $G$ есть простой граф, построенный на $n$ вершинах. Тогда
$$
\Delta(G)\leq \chi'(G)\leq \Delta(G)+1,
$$
где $\Delta(G)$ есть максимальная из степеней вершин графа $G$. 
\end{theor}

\evids нижней оценки элементарно --- понятно, что все ребра, инцидентные одной и той же вершине, должны иметь разные цвета. Верхняя оценка доказывается не столь элементарно, мы это доказательство здесь приводить не будем. Заинтересовавшимся этим доказательством можно порекомендовать конспекты лекций \cite{Karpov}, \cite{Petrov}.


\myitem В заключение данного параграфа мы поговорим об одном из центральных объектах современной алгебраической теории графов, а именно, о так называемом хроматическом многочлене графа $G$. 

\mysubitem Сопоставим любому целому неотрицательному $k$ количество $P_G(k)$ способов правильно окрасить вершины графа $G$ в $k$ цветов. Очевидно, что $P_G(k)=0$ в случае $k<\chi(G)$, и $P_G(k)>0$ для любого $k\geq \chi(G)$. 

\begin{defin}
Хроматическим многочленом $P_G(z)$ называется функция, принимающая в точках $k=0,1,2,\ldots$ значения $P_G(k)$, равные количеству правильных окрасок вершин графа $G$ в $k$ цветов.  
\end{defin}

\mysubitem Приведем примеры хроматических многочленов для некоторых характерных графов.

\begin{examp}
Для полного графа $K_n$ имеем
\begin{equation}
\label{chrom_polyn_K_n}
P_{K_n}(z)=z\,(z-1)\,\ldots\,(z-n+1).
\end{equation}
Действительно, при фиксированном $z=k$, $k=n,n+1,\ldots$, первую вершину графа можно покрасить в любой из $k$ цветов, вторую --- в любой из оставшихся $k-1$ цветов и так далее. Заметим, что при этом, как и следовало ожидать,  $P_{K_n}(k)=0$ при всех $k=0,1,\ldots,n-1$. 
\end{examp}

\begin{examp}
Хроматический многочлен для пустого графа $G=\bar K_n$, построенного на $n$ вершинах, равен
\begin{equation}
\label{chrom_polyn_bar_K_n}
P_{\bar K_n}(z)=z^n.
\end{equation}
Это следует из того, что для любого $k>0$ любую вершину мы можем окрасить в любой из $k$ цветов независимо от цвета остальных вершин. 
\end{examp}

\begin{examp}
Наконец, хроматический многочлен для дерева $T_n$ имеет вид
\begin{equation}
\label{chrom_polyn_T_n}
P_{T_n}(z)=z\,(z-1)^{n-1}.
\end{equation}
Действительно, любую произвольно выбранную вершину дерева мы можем окрасить в любой из $k>1$ цветов, любую смежную с ней вершину мы можем окрасить в любой из оставшихся $k-1$ цветов, и так далее. 
\end{examp}


\mysubitem Во всех вышеприведенных примерах $P_G(z)$ действительно является полиномом, причем степень этого полинома совпадает с количеством $n$ вершин графа $G$. Оказывается, данный факт справедлив и в общем случае. Именно, справедлива

\begin{theor}\label{theor_chrom_polyn}
Для любого графа $G$, построенного на $n$ вершинах, функция $P_G(z)$ представляет собой полином степени $n$ с целыми коэффициентами, причем коэффициент при $z^n$ всегда равен единице, а знаки коэффициентов при остальных степенях чередуются.
\end{theor}

Для доказательства данной теоремы нам понадобится следующая лемма, которая сама по себе очень полезна для вычисления конкретных функций $P_G(z)$.

\begin{lemm} Рассмотрим произвольное ребро $e=\{x,y\}$ графа $G$. Обозначим через $G'_e$ граф, полученный из $G$ удалением ребра $e$, и через $G''_e$ граф, полученный из $G$ стягиванием ребра $e$ в одну вершину. Тогда хроматические многочлены этих трех графов связаны следующим соотношением:
\begin{equation}
\label{rec_crhom_polyn}
P_{G'_e}(z)=P_{G''_e}(z)+P_{G}(z).
\end{equation}
\end{lemm}

\evidp Действительно, все правильные раскраски графа $G'_e$ можно разбить на два блока. В первый блок входят раскраски, в которых вершины $x$ и $y$ окрашены в один цвет, а во второй --- раскраски, в которых данная пара вершин окрашена в разные цвета. Количество окрасок первого типа описывается функцией $P_{G''_e}(z)$, а количество окрасок второго типа --- функцией $P_{G}(z)$. \qed


\mysubitem Перейдем теперь к доказательству теоремы \ref{theor_chrom_polyn}. Будем ее доказывать индукцией по количеству вершин и количеству ребер графа, считая, что утверждение, доказываемое для графа $G$ на $n$ вершинах, верно для всех графов, построенных на меньшем количестве вершин, а также для всех графов на $n$ вершинах, с меньшим, чем у $G$, количеством ребер. База индукции верна --- для пустого графа $\bar K_n$ хроматический полином $P_{\bar K_n}$, рассчитываемый по формуле (\ref{chrom_polyn_bar_K_n}), удовлетворяет всем утверждениям теоремы.

Воспользуемся теперь доказанной выше леммой. В соответствии с рекуррентным соотношением (\ref{rec_crhom_polyn}),
$$
P_{G}(z)=P_{G'_e}(z)-P_{G''_e}(z).
$$ 
Но в графе $G'_e$ ребер на единицу меньше, чем у $G$, а в графе $G''_e$ на единицу меньше вершин. Следовательно, для этих графов все утверждения теоремы выполнены, то есть
$$
P_{G'_e}(z)=z^n-a_{n-1}z^{n-1}+a_{n-2}z^{n-2}-\ldots+(-1)^n a_0,\qquad \qquad a_i\in\Z_+,
$$
$$
P_{G''_e}(z)=z^{n-1}-b_{n-2}z^{n-2}+b_{n-3}z^{n-3}-\ldots+(-1)^{n-1} b_0,\qquad \qquad b_j\in\Z_+.
$$
Как следствие, хроматический полином для $G$ записывается в виде
$$
P_{G}(z)=z^n-(a_{n-1}+1)z^{n-1}+(a_{n-2}+b_{n-2})z^{n-2}-\ldots+(-1)^n (a_0+b_0),
$$
то есть удовлетворяет всем утверждениям теоремы. \qed

\mysubitem Из доказательства теоремы, в частности, следует, что добавление к графу ребра увеличивает коэффициент $a_{n-1}$ полинома $P_G(z)$ на единицу. Иными словами, справедливо

\begin{conseq}
Абсолютное значение коэффициента при $z^{n-1}$ в полиноме $P_n(z)$ совпадает с количеством $|E(G)|$ ребер в графе $G$. 
\end{conseq}

Столь же очевидно и следующее утверждение.

\begin{theor}\label{theor_con_chrom_pol}
Пусть $\{G_1,\ldots,G_m\}$ есть множество односвязных компонент графа $G$. Тогда
$$
P_G(z)=P_{G_1}(z)\cdot\ldots\cdot P_{G_m}(z).
$$
\end{theor}


\mysubitem Как видно из формулы (\ref{chrom_polyn_bar_K_n}), число $k=0$ является корнем кратности $n$ для хроматического многочлена $P_{\bar{K}_n}(z)$ пустого графа. Оказывается, данный факт есть следствие следующего более общего утверждения.

\begin{theor}
Число $k=0$ является корнем хроматического многочлена $P_G(z)$ графа $G$ кратности, равной количеству компонент связности графа $G$. 
\end{theor}

\evidp То, что $k=0$ является корнем любого хроматического многочлена, следует из определения $P_G(z)$: раскраски графа в ноль цветов не бывает. В силу теоремы \ref{theor_con_chrom_pol}, достаточно доказать, что для любого связного графа ноль есть корень единичной кратности $P_G(z)$. Обычно это делается по индукции по количеству вершин в графе. Подробности доказательства, равно как и другие интересные факты, связанные с корнями хроматического полинома, можно посмотреть, например, в \cite{Karpov}.

Заметим в заключение, что изучение корней хроматического многочлена и было основным мотивом введения этого объекта в теорию графов. Эти полиномы были изначально введены в 1913 году для планарных графов Джорджем Биркхофом в одной из многочисленных попыток решения проблемы четырех красок. Если бы удалось доказать, что для всех таких графов $P_G(z)>0$ для всех $z\geq 4$, то данная проблема была бы решена. 


\section*{Упражнения}

\begin{exerc} \label{exerc:tree_bipartide}
Докажите, что дерево является двудольным графом.
\end{exerc}

\begin{exerc} 
Доказать, что максимальное количество ребер в простом двудольном графе на $n$ вершинах не превосходит $n^2/4$ в случае, когда число вершин четно, и $(n-1)^2/4$ в случае, когда это число нечетно.
\end{exerc}

\begin{exerc}
Подмножество $U$ множества вершин графа называется независимым, если никакие две вершины этого подмножества не являются смежными. Обозначим через $\alpha(G)$ количество вершин в максимальном независимом подмножестве графа $G$. Доказать, что для любого графа $G$, построенного на $n$ вершинах, справедливо неравенство
\begin{equation}
\label{eq:upper_bound_chrom_num}
\chi(G)\cdot \alpha(G)\geq n,\qquad n=|V(G)|.
\end{equation}
\end{exerc}

\begin{exerc} 
Доказать, что в графе $G$ c $|E(G)|=m$ ребрами хроматическое число удовлетворяет неравенству
$$
\chi(G)\cdot (\chi(G)-1)\leq 2m.
$$
\end{exerc}


\begin{exerc} 
Доказать, что для любого простого графа $G$ на $n$ вершинах выполнены следующие неравенства:
$$
\chi(G)+\chi(\overline{G}) \leq n+1; \qquad \chi(G)\cdot \chi(\overline{G}) \geq n.
$$
\end{exerc}


\begin{figure}[h]
\centering
\begin{tabular}[t]{ccc}
		\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/4col.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.45\textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/hvatal.eps}
 	\caption{}
	\end{subfigure}	
\end{tabular}
\caption{4-хроматические графы}
\label{fig:4col}
\end{figure}

\begin{exerc} \label{exerc:3col_b}
Доказать, что изображенный на рис.\ref{fig:3col},b граф является $3$-хроматическим.
\end{exerc}

\begin{exerc} 
Доказать, что изображенные на рис.\ref{fig:4col} графы являются $4$-хроматическими.
\end{exerc}

\begin{exerc} 
Доказать, что если в ориентированном графе $G$ нет путей длины, большей, чем $m$ (в частности, нет циклов), то $\chi(G) \leq m$.
\end{exerc}

\begin{exerc} \label{exerc:greedy_col_alg}
Обозначим через $K^*_{n,n}$ граф, полученный из полного двудольного графа $K_{n,n}$ с блоками $X=\{x_1,\ldots,x_n\}$ и $Y=\{y_1,\ldots,y_n\}$ удалением ребер $\{x_i,y_i\}$. Предположим, что граф $K^*_{n,n}$ окрашивается с помощью описанного в пункте 2 жадного алгоритма. Предъявить два способа начального упорядочивания вершин этого графа, для одного из которых алгоритм окрасит вершины в два цвета, а для второго --- в $n$ цветов. 
\end{exerc}

\begin{exerc} 
Доказать, что в любом графе $G$ существует такое линейное упорядочение его вершин, при котором жадный алгоритм раскраски окрасит вершины графа ровно в $\chi(G)$ цветов. 
\end{exerc}

\begin{exerc} \label{exerc:th_Brooks_0}
Пусть $k$ есть максимальная из степеней вершин графа $G$, и пусть этот граф не является $k$-регулярным. Упорядочим вершины графа по невозрастанию степеней этих вершин. Верно ли, что при таком упорядочивании жадный алгоритм использует не более, чем $k$ цветов?
\end{exerc}

\begin{exerc} \label{exerc:th_Brooks_1}
Пусть $k$ есть максимальная из степеней вершин графа $G$, и пусть этот граф не является $k$-регулярным. Доказать, что можно так упорядочить вершины графа $G$, чтобы на последнем месте стояла вершина $x_n$ со степенью, меньшей $k$, а каждая оставшаяся вершина $x_i$ списка имела бы не более $(k-1)$-й смежной вершины с меньшими, чем у $x_i$, индексами.
\end{exerc}

\begin{exerc} \label{exerc:th_Brooks_2}
Точкой сочленения $x$ называется вершина, при удалении которой граф распадается на две или более компоненты связности. Рассмотрим $k$-регулярный односвязный граф, имеющий точку сочленения $x$. Такой граф всегда можно разбить на несколько блоков, имеющих единственную общую вершину $x$. Так как в любом из этих блоков степень вершины $x$ строго меньше степени этой вершины в исходном графе $G$, то мы можем правильно окрасить все вершины такого блока в не более чем $k$ цветов (смотри упражнение \ref{exerc:th_Brooks_1}). Доказать, что данную окраску всегда можно продолжить на весь граф $G$, окрасив правильно все вершины не более чем в $k$ цветов.
\end{exerc}

\begin{exerc} \label{exerc:th_Brooks_2_5}
Показать, что в $k$-регулярном графе без точек сочленения (двусвязном $k$-регулярном графе) всегда можно упорядочить вершины графа $G$ так, чтобы для любого $i=1,\ldots,(n-1)$ вершина $x_i$ имела бы не более $(k-1)$-й смежной вершины с меньшими, чем у $x_i$, индексами.
\end{exerc}

\begin{exerc} \label{exerc:th_Brooks_3}
Предположим, что в двусвязном $k$-регулярном графе $G$ существуют две несмежные между собой вершины $x_1$ и $x_2$, смежные с одной и той же вершиной $x_n$, такие, что граф $G-x_1-x_2$ остается связным. Доказать, что можно так упорядочить вершины графа $G$, чтобы жадный алгоритм окрасил вершины графа не более чем в $k$ цветов.
\end{exerc}

\begin{exerc} \label{exerc:th_Brooks_4}
Доказать, что в двусвязном $k$-регулярном графе существует вершина $x_n$, имеющая пару соседних несмежных между собой вершин $x_1$ и $x_2$, таких, что граф $G-x_1-x_2$ остается связным. 
\end{exerc}

\begin{exerc} 
Пусть $G_2=K_2$, а графы $G_k$, $k>2$, получаются из графов $G_{k-1}$ с помощью описанной в теореме \ref{theor:Mycielski} процедуры. Подсчитать количество вершин в графе $G_k$. 
\end{exerc}

\begin{figure}[h]
\centering
\includegraphics[scale=0.9]{pics/interval.eps}
\caption{Интервальный граф}
\label{fig:interval}
\end{figure}

\begin{exerc}\label{exerc:interval_graphs}
Рассмотрим $n$ замкнутых интервалов $I_1,I_2,\ldots,I_n$ на вещественной оси (рис.\ref{fig:interval}). Построим для этих интервалов граф $G$ на $n$ вершинах $x_1,\ldots,x_n$, соединяя вершины $x_i$ и $x_j$ ребром в том и только в том случае, когда пересечение $I_i\cap I_j\neq\emptyset$. Такой граф $G$ называется \emph{интервальным} графом. Доказать, что интервальный граф является совершенным, то есть что $\chi(G)=\omega(G)$.
\end{exerc}

\begin{exerc} 
Доказать, что хроматический полином простого цикла $C_n$ длины $n$ рассчитывается по формуле
$$
P_{C_n}(z)=(-1)^n(z-1)+(z-1)^n.
$$
\end{exerc}


\section*{Решение упражнений}

\begin{sol_exerc} 
В дереве отсутствуют любые циклы, в том числе и нечётные. Таким образом, для дерева выполняется необходимое и достаточное условие двудольности.
\end{sol_exerc}

\begin{sol_exerc} 
Выберем в качестве $G$ такой простой двудольный граф на $n$ вершинах, у которого количество ребер максимально. Иными словами, $G$ --- это такой двудольный граф, добавление к которому хотя бы одного ребра нарушит свойство двудольности. Очевидно, что в таком графе любая вершина $v$ из первого блока $V_1$ должна быть соединена с \emph{каждой} вершиной из второго блока $V_2$. Если бы это было не так, то есть если бы существовала вершина $u$ из второго блока, еще не соединенная с $v$ ребром, то мы смогли бы добавить к $G$ еще одно ребро $vu$,  а граф при этом остался бы двудольным. Тогда, если $|V_1|=a$, $|V_2|=b$, то $b=n-a$, а общее количество ребер равно $ab=a(n-a)$. Все, что остается сделать --- это найти такое значение параметра $a$, при котором произведение $a(n-a)$ будет максимальным.
\end{sol_exerc}

\begin{sol_exerc}
Любая правильная $k$-раскраска графа разбивает множество $V(G)$ на блоки, каждый из которых является независимым подмножеством, причем $\chi(G)$ --- это количество таких подмножеств. Так как $\alpha(G)$ --- это размер максимального независимого подмножества, то $\chi(G)\cdot \alpha(G)\geq n$. Равенство достигается в случае, когда все раскрашенные блоки имеют один и тот же размер.
\end{sol_exerc}

\begin{sol_exerc} 
Рассмотрим произвольную правильную окраску вершин графа $G$ в $\chi(G)=k$ цветов. Такая раскраска разбивает множество $V(G)$ вершин графа $G$ на $k$ независимых подмножеств. Любые два таких подмножества должны быть связаны между собой по крайней мере одним ребром --- в противном случае мы могли бы использовать один и тот же цвет для окраски всех вершин этих двух подмножеств. Следовательно, в таком графе должно быть по меньшей мере $\BCf{k}{2}$ ребер. 
\end{sol_exerc}

\begin{sol_exerc} 
Вначале докажем следующее уверждение. Пусть у нас есть граф $G$, $|V(G)|=n$, представляющий собой набор блоков вершин $B_i,$ $i\in \{1,\dots, m\}$. Известно, что для каждой пары этих блоков есть две вершины, первая — из первого блока, вторая — из второго, которые ребром не соединены. Тогда такой граф можно покрасить в $n-m+1$ цветов. Доказательство проведём индукцией по $m$. Для $m=1$ утверждение очевидно: красим каждую вершину в свой цвет. Пусть утверждение верно для $k < m$ блоков, докажем для $m$. 

Для этого раскрасим $m-1$ блок указанным образом в $n-|B_m|-m+2$ цветов, пользуясь предположением индукции, и добавим ещё один блок. Вначале покрасим его целиком в <<новые>> цвета, получив раскраску $G$ в $n-m+2$ цвета. Теперь нужно каким-то образом избавиться от одного из цветов.  Каждый из блоков $B_i,$ $i\in \{1,\dots, m-1\}$, содержит вершину $y_i$, не смежную с какой-то вершиной $x_i$ блока с номером $m$. Какой-то из цветов встречается только во множестве $\{y_i\}$, иначе цветов бы было использовано не более $n-m+1$. Пусть этот цвет имеет номер 1. Теперь все вершины из $\{y_i\}$, имеющие первый цвет, покрасим в цвет соответствующего $x_i$. Таким образом мы избавимся от вершин первого цвета и используем, тем самым, в точности $n-m+1$ цвет.

Для доказательства первого неравенства заметим, что вершины графа $G$ можно разбить на $\chi(G)$ блоков, причём каждая пара блоков будет соединена ребром. В графе $\overline{G}$ получим $\chi(G)$ блоков, и между каждой парой блоков хотя бы одного из рёбер не будет. Значит, по только что доказанному утверждению, $\overline{G}$ можно раскрасить в $n-\chi(G)+1$ цветов, откуда $\chi(G)+\chi(\overline{G}) \leq n+1$.


Для доказательства второго неравенства можно заметить, что максимальной клике в $\overline{G}$ соответствует максимальное независимое множество в самом $G$. Таким образом, 
$$
\chi(G)\cdot \chi(\overline{G}) \geq \chi(G)\cdot \omega(\overline{G}) =  \chi(G)\cdot \alpha(G) \geq n.
$$
\end{sol_exerc}

\begin{sol_exerc} 
Покажем, что граф, показанный на рис.\ref{fig:3col},b, не является $2$-раскрашиваемым. Для этого, например, можно взять любую точку на окружности и окрасить ее в первый цвет. Тогда ее соседи обязаны быть окрашенными во второй цвет. Но тогда центральную вершину графа мы уже не сможем окрасить ни в первый, ни во второй цвет, и нам придется для ее окраски использовать третий цвет.
\end{sol_exerc}

\begin{sol_exerc} 
Рассмотрим вначале граф, изображенный на рис.\ref{fig:4col},a. Несложно убедиться, что его можно раскрасить в четыре цвета. Теперь заметим, что размер $\alpha(G)$ максимального независимого множества в нем равен двум. Если бы у такого графа хроматическое число было бы равно $\chi(G)=3$, то произведение $\alpha(G)\cdot \chi(G)=6$ и было бы меньше количества $|V(G)|=7$ вершин графа, что противоречит неравенству (\ref{eq:upper_bound_chrom_num}).

Аналогичные рассуждения применимы и к графу, показанному на рис.\ref{fig:4col},b. Максимальное независимое множество вершин такого графа состоит из четырех вершин --- это, к примеру, левая верхняя и правая нижняя вершины, а также пара внутренних вершин, смежных с левой нижней вершиной. Поэтому в данном графе $\alpha(G)=4$. 

В принципе, в случае $\chi(G)=3$ произведение $\alpha(G)\cdot \chi(G)=12=|V(G)|$. Однако равенство в (\ref{eq:upper_bound_chrom_num}) возможно лишь в случае, когда все независимые множества вершин имеют один и тот же размер, равный $\alpha(G)$. В нашем же случае это не так --- несложно убедиться, что если мы выбрали наше максимальное независимое множество вершин с $\alpha(G)=4$, то на оставшемся подмножестве из восьми вершин размер любого независимого множества не превосходит трех.

Следовательно, в рассматриваемом примере $\alpha(G)\cdot \chi(G) >|V(G)|$, поэтому $\chi(G)>3$. В четыре же цвета его раскрасить можно, так что это --- $4$-хроматический граф.
\end{sol_exerc}

\begin{sol_exerc} 
Назначим каждой вершине $v$ цвет, по номеру равный длине наибольшего пути, начинающегося в $v$. Докажем, что это правильная раскраска. Если это не так, то есть две вершины $u$ и $w$, такие, что они имеют один цвет и есть ребро $uw$. Раз цвета этих вершин равны, то и длины максимальных путей, начинающихся в $u$ и $w$, равны. Рассмотрим путь, начинающийся в $u$, проходящий по ребру $uw$, и продолжающийся максимальным путем из $w$. Очевидно, он имеет длину на единицу больше максимального пути из $w$. Противоречие.
\end{sol_exerc}

\begin{sol_exerc} 
Если выбрать начальную последовательность вершин в графе 
$$
x_1,y_1,\ldots,x_n,y_n,
$$
то жадный алгоритм окраски использует $n$ цветов. В случае, когда начальная последовательность имеет вид
$$
x_1,\ldots,x_n,y_1,\ldots,y_n,
$$
жадный алгоритм окрасит вершины графа в два цвета. 
\end{sol_exerc}

\begin{sol_exerc} 
Рассмотрим какую-нибудь раскраску графа $G$ в $\chi(G)$ цветов. Упорядочим вершины таким образом, чтобы вершины, покрашенные в цвета с меньшими номерами, стояли раньше. В этом случае наименьшие номера получат вершины, покрашенные в первый цвет, следующие за ними номера — вершины, покрашенные во второй цвет, и так далее. 

Запустим жадный алгоритм на упорядоченных таким образом вершинах. Покажем индукцией по индексу $i$ вершины $x_i$, что алгоритм припишет каждой вершине цвет не больший, чем был у неё в исходной раскраске. Для вершины $x_1$ это верно: алгоритм припишет ей цвет $1$. Пусть наше утверждение верно для всех вершин с индексом, меньшим $i$, и покажем, что оно выполняется и для вершины $x_i$. Если алгоритм покрасил эту вершину в цвет $k$, то хотя бы одна из смежных с ней вершин $x_j$, $j<i$, покрашена в цвет $(k-1)$. В исходной раскраске вершина $x_j$ была покрашена в цвет, больший или равный $(k-1)$, по предположению индукции. Следовательно, цвет $k$ вершины $x_i$ не больше цвета этой вершины в исходной раскраске. 

Таким образом, жадный алгоритм на упорядоченном описанным выше способом множестве вершин использует не более $\chi(G)$ цветов. В то же время, меньше, чем $\chi(G)$ цветов, он использовать не может по определению $\chi(G)$, что и доказывает требуемое утверждение.
\end{sol_exerc}


\begin{figure}[h]
\centering
\includegraphics[scale=1.0]{pics/greedy_coloring.eps}
\caption{}
\label{fig:greedy_coloring}
\end{figure}

\begin{sol_exerc} 
Нет, это не верно --- контрпример показан на рис.\ref{fig:greedy_coloring}.
\end{sol_exerc}


\begin{sol_exerc} 
Выберем произвольную вершину $x$ графа $G$ степени $\deg(x)<k$ в качестве последней вершины $x_n$ жадного алгоритма. Так как граф $G$ связный, то мы всегда сможем построить остовное дерево с корнем в вершине $x_n$, назначая вершинам этого дерева метки $x_i$ с индексами $i$, убывающими по мере удаления этих вершин от корня дерева. В этом случае любая вершина $x_i$, отличная от $x_n$, обязательно будет иметь по крайней мере одну смежную вершину $x_j$ с индексом $j$, большим, чем $i$, на своем пути к корню $x_n$ остовного дерева. Как следствие, вершина $x_i$ будет иметь не более $(k-1)$-й смежной вершины с меньшими, чем у $x_i$, индексами.
\end{sol_exerc}

\begin{sol_exerc} 
Предположим, что в результате работы жадного алгоритма вершина $x$ окрасилась в цвет $j$. Рассмотрим все вершины данного блока, окрашенные в цвет $j$, а также все вершины этого блока, окрашенные в цвет $1$. Поменяем цвета этих вершин на противоположные. При этом, очевидно, правильность окраски вершин не нарушится. В результате такой замены вершина $x$ будет окрашена в цвет $1$. Окрасив описанным в упражнении способом все блоки графа $G$, и заменив в каждом из этих блоков цвет вершины $x$ на $1$, мы получим правильную окраску всех вершин нашего графа. 
\end{sol_exerc}

\begin{sol_exerc} 
Для этого достаточно выбрать в качестве $x_n$ произвольную вершину графа и построить из $x_n$ остовное дерево, назначая вершинам этого дерева метки $x_i$ с индексами $i$, убывающими по мере удаления этих вершин от корня дерева. 
\end{sol_exerc}

\begin{sol_exerc} 
Построим в графе $G-x_1-x_2$ остовное дерево из вершины $x_n$, назначая вершинам этого дерева метки $x_i$ с индексами $i$, убывающими по мере удаления этих вершин от корня дерева. Запустив тогда жадный алгоритм для вершин, упорядоченных в порядке $(x_1,x_2,\ldots,x_n)$, мы окрасим вершины графа в не более чем $k$ цветов. Действительно, вершины $x_1$ и $x_2$ алгоритм окрасит в цвет $1$. Так как любая вершина $x_i$, $i=3,\ldots,(n-1)$, обязательно будет иметь по крайней мере одну смежную вершину $x_j$ с индексом $j$, большим, чем $i$, на своем пути к корню $x_n$ остовного дерева, то жадный алгоритм окрасит ее в один из цветов множества $\{1,\ldots,k\}$. Наконец, среди $k$ смежных с $x_n$ вершин найдутся как минимум две вершины, окрашенные в один и тот же цвет, а именно, вершины $x_1$ и $x_2$. Поэтому для правильной окраски $x_n$ также будет достаточно цветов множества $\{1,\ldots,k\}$.
\end{sol_exerc}

\begin{sol_exerc} 
Выберем произвольную вершину $x\in V(G)$ и рассмотрим граф $G-x$. Предположим вначале, что такой граф имеет хотя бы одну точку сочленения. Выберем тогда в качестве $x_n$ вершину $x$. Разобьем граф $G-x$ на блоки $B_j$ --- двусвязные подграфы графа $G-x$ (смотри рис.). Заметим, что для любого $m\neq j$ блок $B_m$ либо не имеет с $B_j$ общих вершин, либо имеет с $B_j$ единственную общую вершину --- точку сочленения $z_j$. Пусть $B_1$, $B_2$ --- любые два блока графа $G-x$, соответствующие листьям дерева блоков $B(G-x)$, а $z_1$ и $z_2$ --- принадлежащие этим двум блокам точки сочленения. Так как исходный граф $G$ двухсвязный, то существует вершина $x_1\in (B_1-z_1)$, смежная с $x$ в графе $G-z_1$, а также вершина $x_2\in (B_2-z_2)$, смежная с $x$ в графе $G-z_2$. По построению, вершины $x_1$ и $x_2$ несмежны, поэтому вершины $x_1,x_2,x_n$ образуют искомую тройку вершин в графе $G$.  

Предположим теперь, что граф $G-x$ не имеет точек сочленения. Рассмотрим $k$-элементное множество $N(x)$ смежных с $x$ вершин. Если бы все эти вершины были бы смежными только друг с другом и с вершиной $x$, то граф $G$ представлял бы собой полный граф $K_k$. Но этого быть не может по условию теоремы, поэтому хотя бы одна вершина $z$ множества $N(x)$ имеет вершину $y$, не являющуюся смежной с вершиной $x$. Выберем тогда в качестве $x_1$ вершину $x$, в качестве $x_2$ --- вершину $y$, а в качестве $x_n$ --- вершину $z$. Данная тройка вершин удовлетворяет всем условиям нашего упражнения.  
\end{sol_exerc}

\begin{sol_exerc} 
Для количества вершин $v_k$ можно записать следующее рекуррентное соотношение:
$$
v_{k+1}=2v_k+1,\qquad v_2=2. 
$$
Перепишем это соотношение через числа $w_k:=v_k+1$:
$$
w_{k+1}=2w_k,\qquad w_2=3 \qquad \Longrightarrow\qquad w_k=3\cdot 2^{k-2}.
$$ 
Следовательно, $v_k=3\cdot 2^{k-2}-1$. 
\end{sol_exerc}

\begin{sol_exerc} 
Докажем данное утверждение по индукции. База индукции очевидна --- в случае, когда у нас имеется единственный интервал $I_1$, соответствующий ему интервальный граф $G=K_1$, то есть представляет собой изолированную вершину, и для него равенство $\chi(G)=\omega(G)$, очевидно, выполняется. Теперь предположим, что утвержение верно для всех интервальных графов, построенных на $(n-1)$-й вершине и докажем, что оно верно для произвольного интервального графа на $n$ вершинах. 

Рассмотрим для этого интервал $I_1=[a,b]$, правая конечная точка $b$ которого находится левее всех аналогичных точек остальных интервалов. Этому интервалу отвечает вершина $x_1$ графа $G$, расположенная левее всех остальных вершин графа на рис. Удаление этой вершины приводит к интервальному графу $G-x_1$, построенному по совокупности интервалов $I_2,\ldots,I_n$. По индукционному предположению, для графа $G-x_1$ наше утверждение верно, то есть $\chi(G-x_1)=\omega(G-x_1)$. Так как удаление вершины в графе может разве что уменьшить размер максимальной клики в нем, то $\omega(G-x_1)\leq\omega(G)$. Поэтому $\chi(G-x_1)\leq\omega(G)$, и мы всегда граф $G-x_1$ можем окрасить в $\omega(G)$ цветов. 

Заметим теперь, что если в исходном графе $G$ вершина $x_1$ является смежной с какой-то другой вершиной $x_i$ этого графа, то правый конец $b$ отрезка $I_1$ принадлежит интервалу $I_i$. Действительно, в противном случае мы бы получили, что правый конец интервала $I_i$ лежит левее точки $b$, что противоречит выбору нашего отрезка $I_1$. Рассмотрим все интервалы $I_i$, содержащие точку $b$, включая и интервал $I_1$. Так как все они перекрываются друг с другом, то соответствующие им вершины графа $G$ образуют некоторый полный подграф. Количество вершин в таком подграфе не превосходит $\omega(G)$ по определению кликового числа. Как следствие, степень вершины $x_1$ графа $G$ не превосходит величины $\omega(G)-1$. Но это означает, что смежные с $x_1$ вершины окрашены не более чем в $\omega(G)-1$ цветов, так что мы всегда сможем продолжить окраску графа $G-x_1$ в $\omega(G)$ цветов на вершину $x_1$, не добавляя никакого дополнительного цвета. Тем самым мы доказали, что $\chi(G)\leq \omega(G)$. Так как $\chi(G)$ всегда больше или равно кликового числа $\omega(G)$, то отсюда мы и получаем требуемое равенство $\chi(G)=\omega(G)$. 
\end{sol_exerc}

\begin{sol_exerc} 
Докажем по индукции. Для цикла из двух вершин утверждение верно: 
$$
P_{C_2}(z)=(z-1)^2+(z-1)=z(z-1).
$$ 

Пусть верно для $k<n$, докажем для $n$. При при удалении любого ребра из цикла образуется цепочка вершин. При стягивании любого ребра образуется цикл на единицу меньшей длины. Поэтому:
$$
P_{C_n}(z)=P_{C'_n}(z)-P_{C''_n}(z)=P_{C'_n}(z)-P_{C_{n-1}}(z) = 
$$
$$
z(z-1)^{n-1}-(-1)^{n-1}(z-1)-(z-1)^{n-1} = (-1)^{n}(z-1)+(z-1)^n.
$$
\end{sol_exerc}


\section*{Дополнения, не вошедшие в основную часть}

\myitem Нужно описать некоторое улучшение жадного алгоритма за счет правильного упорядочивания вершин графа (см. Дистель, стр.115-116, Вест, стр.195).

\myitem Нужно из Веста взять операции над графами (сама по себе полезная штука) и посмотреть, к каким следствиям эти операции приводят с точки зрения вычисления хроматического числа графа. На эту же тему см. задачки 1-8 у Ловаса. 

\myitem Нужно посмотреть раскраску орграфов (теорема Галаи-Роя, стр.361 Бонди, Мерфи, теория графов). См. также задачку 9 у Ловаса. Плюс пример 5.1.20 и теорему 5.1.21 у Веста. 

\myitem Критические графы.

\begin{defin}
Граф $G$ называется $k$-критическим, если он $k$-хроматический и для любого его ребра $e\in E(G)$ граф $G-e$ имеет хроматическое число, меньшее $k$.
\end{defin}

Странно, везде я видел, что в определении - так называемый proper subgraph (собственный подграф).

\begin{examp}
Любой цикл нечетной длины является $3$-критическим графом: удаление любого его ребра дает дерево, то есть $2$-хроматический граф. 
\end{examp}

Что такое теорема 8.1 у Бонди, Мерфи, теория графов с приложениями, стр.125? Она же теорема 14.6 в теории графов Бонди, Мерфи, стр.366? Вообще, надо бы поподробнее посмотреть параграф 8.1 \cite{Bondy_Murty_old} и параграф 14.2 \cite{Bondy_Murty_new}. Плюс задачки к нему в этих книжках.

Еще смотри задачки 17-24 из Ловаса. Еще обязательно стр.210 и далее у Веста.


\myitem Гипотеза Хайоша. 

\myitem Конструкция Хайоша (см. задачку 16 у Ловаса).

\myitem Экстремальные задачки и теорема Тюрана (стр. 207 в \cite{West}). 




\section{Начала теории Рамсея}

\myitem Начнем мы со стандартной задачи, с которой обычно начинают изучение этой теории. 

\mysubitem Пусть в комнате находятся шесть человек. Доказать, что в этой комнате обязательно найдется трое либо попарно знакомых, либо попарно незнакомых между собой людей.  

На языке теории графов эта же задача формулируется следующим образом. Пусть у нас имеется простой граф $G$, построенный на $n=6$ вершинах. Доказать, что либо в самом графе $G$, либо в его дополнении $\bar{G}$ существует простой цикл длины три. 

Наконец, эту же задачу можно переформулировать на языке раскраски ребер в полном графе. Именно, пусть имеется полный граф $K_6$, построенный на шести вершинах. Предположим, что мы произвольным образом окрасили каждое ребро этого графа в один из двух цветов --- например, в красный или в синий цвет. Доказать, что в графе обязательно найдется либо красный, либо синий треугольник.  

\mysubitem Для решения этой задачи воспользуемся принципом Дирихле. Выберем произвольную вершину $x$ полного графа $K_6$. Эта вершина соединена с оставшимися вершинами графа $K_6$ пятью ребрами, окрашенными в один из двух цветов. На языке предметов и ящиков мы в этой задаче имеем пять предметов (ребер), которые нам нужно расположить по двум ящикам (окрасить в один из двух цветов). Тогда, по принципу Дирихле, у нас в одном из ящиков содержится хотя бы $\lceil 5/2\rceil=3$ предмета. Иными словами, в графе $K_6$ обязательно найдутся хотя бы три вершины, соединенные с вершиной $x$ ребрами одного цвета, например, синего.

На этом, по сути дела, доказательство нашего утверждения и заканчивается. Действительно, предположим вначале, что все эти три вершины соединены между собой ребрами только лишь красного цвета. Тогда в графе $K_6$ существует треугольник, окрашенный в красный цвет. В противном случае, то есть в случае, когда хотя бы две из этих вершин соединены между собой ребром синего цвета, в графе $K_6$ имеется треугольник синего цвета, составленный из этих двух вершин и вершины $x$.  


\mysubitem Заметим теперь, что уже граф $K_5$ подобным свойством не обладает --- можно пять его ребер, расположенных по периметру графа, окрасить в синий цвет, а все его внутренние ребра выкрасить в красный цвет. Иными словами, $K_6$ --- минимальный полный граф, который обладает данным свойством. Осталось точно определить, о каком свойстве идет речь.

\begin{defin}
Пусть $(p,q)$ есть пара положительных целых чисел, $K_n$ --- полный граф, все ребра которого окрашиваются в один из двух цветов (например, красный и синий). Говорят, что граф $K_n$ \emph{обладает свойством Рамсея,} если \emph{при любой} раскраске его ребер граф $K_n$ содержит либо полный подграф $K_p$, все ребра которого окрашены в красный цвет, либо полный подграф $K_q$, все ребра которого окрашены в синий цвет.
\end{defin}

\begin{defin}
Наименьшее целое положительное число $n$, такое, что граф $K_n$ обладает свойством Рамсея, называется числом Рамсея $R(p,q)$.
\end{defin}

Иными словами, $R(p,q)$ есть наименьшее целое положительное число $n$, такое, что \emph{в любой} компании из $n$ людей обязательно найдутся либо $p$ попарно знакомых, либо $q$ попарно незнакомых между собой людей.
 
Мы, таким образом, доказали, что $R(3,3)=6$. 

\mysubitem Числа Рамсея чрезвычайно трудно находить. Пока известно совсем немного чисел Рамсея, а именно,
$$
\begin{array}{ccccccccc}
R(3,3)&R(3,4)&R(3,5)&R(3,6)&R(3,7)&R(3,8)&R(3,9)&R(4,4)&R(4,5)\\[2ex]
6&9&14&18&23&28&36&18&25
\end{array}
$$
Для остальных чисел Рамсея имеются только оценки сверху и снизу. Так, доказано, что число Рамсея $R(5,5)$ лежит в диапазоне от $43$ до $49$. 

Чтобы наглядно продемонстрировать трудности в вычислении чисел Рамсея, Эрдеш часто рассказывал следующий анекдот. Представим себе, что инопланетяне напали на Землю и угрожают уничтожить ее через год в случае, если человечество не сможет найти число Рамсея $R(5,5)$. Тогда, используя лучшие умы и мощности всех имеющихся суперкомпьютеров, человечество, видимо, смогло бы за год найти это число. Если бы, однако, инопланетяне потребовали бы найти число Рамсея $R(6,6)$, то у людей не осталось бы другого выхода, кроме как нанести по инопланетянам превентивный удар.

\mysubitem Сформулируем некоторые простые свойства чисел Рамсея. Прежде всего, из определения чисел Рамсея следует, что $R(p,q)=R(q,p)$. Далее, если $K_n$ обладает свойством Рамсея, то и любой граф $K_m$ с $m>n$ также этим свойством обладает --- просто потому, что $K_m$ всегда содержит $K_n$ в качестве своего подграфа.

По определению полагают, что в вырожденном случае $R(p,1)=1$. Очевидно также, что $R(p,2)$ всегда равняется $p$. Действительно, в любой компании из $p$ людей либо все попарно незнакомы, либо найдется хотя бы одна пара знакомых между собой людей. 

Следующее утверждение уже несколько менее очевидно.

\begin{theor}[Эрдеш, Секереш]  \label{theor:R_p_q_noneq}
Для любых $p,q\geq 3$ справедливо неравенство
\begin{equation}
\label{eq:ineq_Erd_Seq}
R(p,q)\leq R(p-1,q)+R(p,q-1).
\end{equation}
\end{theor}

\evidp Рассмотрим полный граф $K_n$, построенный на $n=R(p-1,q)+R(p,q-1)$ вершинах, любое ребро которого окрашено либо в красный, либо в синий цвет. Выберем произвольную вершину $x\in K$ и разобьем оставшееся множество вершин на два, возможно пустых, блока. К блоку $M$ мы отнесем вершины, соединенные с $x$ красными ребрами, а к блоку $N$ --- вершины, соединенные с $x$ синими ребрами. Так как общее количество вершин в графе $K_n$ равно
$$
n=|M|+|N|+1=R(p-1,q)+R(p,q-1),\qquad \text{то} \qquad |M|+|N|=R(p-1,q)+R(p,q-1)-1.
$$
Отсюда, в частности, следует, что либо $|M|\geq R(p-1,q)$, либо $|N|\geq R(p,q-1)$. Действительно, в противном случае мы бы получили, что
$$
|M|+|N|\leq R(p,q-1)-1 +R(p-1,q)-1,
$$
что противоречит записанному выше равенству.

Предположим для определенности, что $|M|\geq R(p-1,q)$. В этом случае полный подграф, построенный на вершинах из множества $M$, либо содержит подграф $K_{p-1}$ с красными ребрами, либо содержит подграф $K_q$, все ребра которого окрашены в синий цвет. Во втором случае доказательство завершено. В первом случае добавим к $M$ вершину $x$ и все ребра, ведущие из $M$ в $x$. По построению множества $M$, все эти ребра красные. Следовательно, мы получили полный граф $K_p$, все ребра которого окрашены в красный цвет. 

Случай $|N|\geq R(p,q-1)$ рассматривается аналогично. \qed

\begin{conseq}
Для любых $p,q\geq 1$ числа Рамсея $R(p,q)$ существуют. 
\end{conseq}

\begin{conseq}
Для любых $p,q\geq 2$ справедливо неравенство
\begin{equation}
\label{eq:top_estimate}
R(p,q)\leq \BCf{p+q-2}{p-1}.
\end{equation} 
В частности, 
\begin{equation}
\label{eq:top_estimate_p}
R(p,p)\leq\BCf{2p-2}{p-1}.
\end{equation}
\end{conseq}

\evidp Будем доказывать неравенство по индукции. Проверим базу индукции:
$$
\BCf{p+2-2}{p-1}=\BCf{p}{p-1}=p=R(p,2),\qquad \BCf{2+q-2}{2-1}=\BCf{q}{1}=q=R(2,q).
$$
Теперь воспользуемся неравенством (\ref{eq:ineq_Erd_Seq}) для доказательства индукционного перехода:
$$
R(p,q)\leq R(p-1,q)+R(p,q-1)\leq \BCf{p+q-3}{p-2}+\BCf{p+q-3}{p-1}=\BCf{p+q-2}{p-1}.
$$
\qed


\mysubitem Посмотрим вначале, насколько хороши полученные выше оценки. Для числа Рамсея $R(3,3)$ оценка (\ref{eq:top_estimate_p}) точна:
$$
R(3,3)=6\leq\BCf{6-2}{3-1}=\BCf{4}{2}=6.
$$
В случае $R(5,5)$ оценка (\ref{eq:top_estimate_p}) довольно груба: мы знаем, что $R(5,5)\in[43,49]$, тогда как согласно (\ref{eq:top_estimate}) имеем 
$$
R(5,5)\leq\BCf{10-2}{5-1}=\BCf{8}{4}=70.
$$

Теперь посмотрим, насколько оценка (\ref{eq:top_estimate_p}) велика. Мы знаем, что 
$$
\sum\limits_{k=0}^{2p-2}\BCf{2p-2}{k}=2^{2p-2}\qquad \Longrightarrow \qquad \BCf{2p-2}{p-1}\leq 2^{2p-2}
\qquad \Longrightarrow \qquad R(p,p)\leq 2^{2p-2}.
$$

 

\myitem Постараемся теперь получить нижнюю оценку для чисел Рамсея.

\mysubitem Самый прямой способ --- это найти такую раскраску полного графа $K_n$, которая бы не содержала ни синего, ни красного полных подграфов. Для случая $R(3,3)$ мы подобную раскраску уже привели. В популярной статье \cite{Grach_Spens} приведены аналогичные примеры для $R(3,4)$, $R(3,5)$, $R(3,6)$, $R(3,7)$, $R(3,8)$, $R(3,9)$ и даже для $R(4,4)$. Однако построить подобные примеры для других чисел довольно затруднительно.

\mysubitem В 1947 году Эрдеш предложил вероятностный способ отыскания нижней границы числа Рамсея $R(r,r)$, $r\geq 3$. С помощью данного подхода он показал, что 
\begin{equation}
\label{eq:bottom_estimate}
R(r,r)>\left\lfloor 2^{r/2}\right\rfloor.
\end{equation}
В основе его рассуждений лежали следующие соображения. Возьмем, к примеру, полный граф, построенный на $n=\lfloor 2^{r/2}\rfloor$ вершинах. Неравенство (\ref{eq:bottom_estimate}) означает, что при таком $n$ \emph{возможно} так раскрасить ребра этого графа, что ни один полный подграф $K_r$ данного графа не будет раскрашен ни в красный, ни в синий цвета. Для $R(3,3)$ мы просто предъявили такую раскраску. Однако для доказательства неравенства (\ref{eq:bottom_estimate}) такой конструктивный подход оказывается, в общем-то, излишним. Нам достаточно доказать, что \emph{вероятность} $p$ построить такую раскраску отлична от нуля. Или, что то же самое, вероятность того, что мы можем найти в случайным образом раскрашенном полном графе на $n$ вершинах полный подграф $K_r$, окрашенный только в красный или только в синий цвета, меньше единицы. 

\mysubitem Проведем теперь формальные рассуждения. Пусть мы проводим серию независимых испытаний, заключающихся в подбрасывании идеальной монетки. В случае, если в процессе однократного подбрасывания монетки у нас выпадает орел, то мы окрашиваем некоторое случайно выбранное ребро полного графа $K_n$ в красный цвет, если решка --- в синий. Мы хотим оценить вероятность того, что в таком процессе появится подграф $K_r$, все ребра которого окрашены в один и тот же цвет. 

У полного графа $K_r$ имеется ровно $\BCf{r}{2}=r(r-1)/2$ ребер, поэтому вероятность того, что случайно выбранный подграф $K_r$ графа $K_n$ окажется окрашенным в один из двух цветов равна, очевидно,
$$
\dfrac{2}{2^{r(r-1)/2}}=2^{1-r(r-1)/2}.
$$
Любой полный граф $K_n$ имеет ровно $\BCf{n}{r}$ полных подграфов, построенных на $r$ вершинах. Вероятность того, любой из них окрашен только в один цвет, очевидно, одинакова и равна $2^{1-r(r-1)/2}$. Обозначим через $A_S$ событие, заключающееся в том, что $K_r$-подграф $S$ оказался окрашен в один цвет. Мы всегда можем найти такой подграф только в том случае, если
$$
\Pr\Bigl(\bigcup\limits_{S}A_S\Bigr)=1. 
$$
В случае же
$$
\Pr\Bigl(\bigcup\limits_{S}A_S\Bigr)<1
$$
у нас обязательно найдется способ так раскрасить ребра графа $K_n$, что у него не найдется ни одного подграфа $K_r$, окрашенного только в один цвет. Мы знаем, что
$$
\Pr\Bigl(\bigcup\limits_{S}A_S\Bigr)\leq \sum\limits_{S}\Pr(A_S)=\BCf{n}{r}2^{1-r(r-1)/2}.
$$
Поэтому если окажется, что
$$
\BCf{n}{r}2^{1-r(r-1)/2}<1,
$$
то и вероятность
$$
\Pr\Bigl(\bigcup\limits_{S}A_S\Bigr)
$$
будет строго меньше единицы. Иными словами, если $n$ удовлетворяет неравенству
$$
\BCf{n}{r}2^{1-r(r-1)/2}<1,
$$
то число Рамсея $R(r,r)$ заведомо больше такого $n$. 

\mysubitem Проведем асимптотическую оценку этого результата. Ясно, что
$$
\BCf{n}{r}=\dfrac{n(n-1)\ldots(n-r+1)}{r!}\leq \dfrac{n^r}{r!}.
$$
Теперь,
$$
\dfrac{n^r}{r!}\cdot \dfrac{2}{2^{r(r-1)/2}}<1\qquad \Longleftrightarrow\qquad \left(\dfrac{n}{r^{r/2}}\right)^{r}\cdot 
\dfrac{2^{r/2+1}}{r!}<1.
$$
Заметим теперь, что при $r=3$ дробь $2^{r/2+1}/r!=2^{5/2}/3!=2^{3/2}/3\approx 0.94$. При $r>3$ она еще меньше, и уж во всяком случае, она всегда меньше единицы. Следовательно, нам достаточно потребовать, чтобы выполнялось неравествно $n\leq 2^{r/2}$. В частности, если мы возьмем $n=\lfloor 2^{r/2}\rfloor$, то мы с гарантией получим, что
$$
R(r,r)>\left\lfloor 2^{r/2}\right\rfloor.
$$

\mysubitem Считается, что с доказательства данного утверждения возникло новое направление в комбинаторике --- так называемая вероятностная комбинаторика. С современным состоянием дел в этой науке можно ознакомиться по книгам \cite{Erdesch_Spens}, \cite{alon}.

Существенным недостатком описанного выше вероятностного подхода является то, что он не конструктивен --- доказывается, что какая-то структура существует, но не предлагается никакого конкретного алгоритма по ее построению. 


\myitem Приведенные выше результаты можно обобщить в нескольких направлениях.

\mysubitem Прежде всего, мы можем рассмотреть раскраску ребер полного графа в три и более цветов. Именно, справедлива 

\begin{theor}
Для любого количества $s>0$ цветов и любого набора положительных целых чисел $a_1,\ldots,a_s$ существует минимальное число $n=:R(a_1,\ldots,a_s)$, такое, что для любой раскраски ребер полного графа $K_n$ в $s$ цветов найдется полный подграф $K_{a_i}$, все ребра которого окрашены в некоторый цвет $i$ из множества $\{1,\ldots,s\}$.
\end{theor}

\evids будем проводить по индукции. Результат тривиален в случае $s=1$ и верен в случае $s=2$. Предположим теперь, что $s>2$ и докажем справедливость неравенства
$$
R(a_1,\ldots,a_s)\leq R(a_1,\ldots,a_{s-2},r),\qquad r=R(a_{s-1},a_s).
$$
Рассмотрим для этого полный граф $K_N$, построенный на 
$$
N=R(a_1,\ldots,a_{s-2},r)
$$
вершинах, каждое ребро которого окрашено в один из $s$ цветов. Перестанем на время различать цвета $s$ и $s-1$. Как следствие, мы получаем граф, ребра которого окрашены в $s-1$ цветов. По определению числа Рамсея $R(a_1,\ldots,a_{s-2},r)$, окрашенный таким образом граф $K_N$ либо содержит подграф $K_{a_i}$, ребра которого окрашены в цвет $i$, $i\in[1,\ldots,a_{s-2}]$, либо содержит подграф $K_r$, ребра которого окрашены общим для $s$ и $s-1$ цветом. В первом случае мы получили то, что хотели. Во втором случае вновь начнем различать цвета. Так как $r=R(a_s,a_{s-1})$, то, по определению числа $R(a_s,a_{s-1})$, полный граф $K_r$ либо содержит подграф $K_{a_{s-1}}$, окрашенный в цвет $s-1$, либо подграф $K_{a_s}$, окрашенный в цвет $s$. Итак, граф $K_N$ всегда удовлетворяет свойству Рамсея для чисел $a_1,\ldots,a_s$, а следовательно, $N$ больше или равно числу Рамсея $n=R(a_1,\ldots,a_s)$. \qed 

Заметим, что числа Рамсея $R(a_1,\ldots,a_s)$ с $s>2$ находить еще сложнее, чем числа $R(p,q)$. Так, в настоящее время известно лишь одно точное число Рамсея такого рода --- число
$$
R(3,3,3)=17.
$$

\mysubitem Следующее обобщение теоремы Рамсея состоит в том, что можно, в принципе, вершины графа соединять не ребрами, а так называемыми гиперребрами --- непустыми подмножествами множества $V$ вершин графа $G$. Такого рода объект называется гиперграфом.

\begin{defin}
Гиперграфом $H$ называется пара $(V,P(V))$, состоящая из множества $V$, называемого множеством вершин гиперграфа $H$, а также из множества $P(V)$ гиперребер, представляющего собой некоторое подмножество множества $2^V\setminus\emptyset$ всех непустых подмножеств множества $V$.
\end{defin}

\begin{defin}
Гиперграф $H$, все гиперребра которого имеют один и тот же размер $m$, называется $m$-однородным. 
\end{defin}

В обычном графе в качестве $P(V)$ берется подмножество всех двухэлементных подмножеств множества $V$. Таким образом, это $2$-однородный гиперграф. 

\begin{theor}[Рамсей]
Для любого целого $s>0$, любых целых положительных $a_1,\ldots,a_s$ и любого числа $m>0$, такого, что $a_i\geq m$, $i=1,\ldots,s$, существует минимальное натуральное число $n=R_m(a_1,\ldots,a_2)$, такое, что для любой раскраски гиперребер полного $m$-однородного гиперграфа, построенного на $n$ вершинах, в $s$ цветов обязательно найдется полный $m$-однородный подгиперграф порядка $a_i$, все гиперребра которого окрашены в один и тот же цвет $i$. 
\end{theor} 

\evids данной теоремы проводится также по индукции, но уже по всем параметрам --- $m$, $s$, $a_1,\ldots,a_s$. 

Обычно данную теорему формулируют на языке теории множеств.
\begin{theor}[Рамсей]
Пусть 
$$
m\geq 1,\qquad a_i\geq m,\qquad i=1,\ldots,s.
$$ 
Тогда существует такое наименьшее натуральное число 
$$
n:=R_m(a_1,\ldots,a_s),
$$
что для любого $N\geq n$ и любого упорядоченного разбиения $N$-элементного множества $V$ на $s$ блоков $A_1,\ldots,A_s$ (для любой раскраски множества $V$ вершин) обязательно найдется такое $i$, что для $a_i$-элементного подмножества множества $V$ все его $m$-подмножества содержатся в $A_i$ (окрашены в $i$-й цвет). 
\end{theor}



\myitem Теория Рамсея имеет многочисленные приложения в самых различных областях математики. Приведем лишь два примера из этой области.

\mysubitem История первого примера такова. В 1933 году группа венгерских студентов из разных университетов Будапешта встречалась по воскресеньям в загородном парке для разговоров о математике. Одна студентка из этой группы, Эстер Клейн, предложила друзьям решить следующую любопытную задачку: доказать, что если на плоскости имеются пять точек общего положения (то есть такие, что никакие три из них не лежат на одной прямой), то обязательно найдутся четыре из них, образующие выпуклый четырехугольник. 

Двое студентов из этой группы, девятнадцатилетний студент Будапештского университета Пал Эрдеш, и чуть более старший его товарищ Дьердь Секереш, незадолго до этого получивший диплом инженера-химика Будапештского политехнического университета, довольно быстро справились с этой задачей. Действительно, любая конфигурация, удовлетворяющая условиям задачи, относится к одному из трех типов (смотри рисунок). Простейший случай --- это когда выпуклая оболочка всех пяти точек является четырехугольником. В этом случае все доказано. Если выпуклая оболочка --- пятиугольник, то для решения задачи достаточно соединить любые четыре точки. Наконец, в случае, когда выпуклая оболочка является треугольником, нужно через две внутренние точки провести прямую. Она разобьет треугольник на две части, в одной из которых содержатся ровно две вершины треугольника. Соединяя их с двумя внутренними точками, вновь получим выпуклый четырехугольник.  

Довольно быстро Эрдеш и Секереш обобщили результат на случай выпуклого пятиугольника --- оказалось, что пять из девяти точек общего положения на плоскости образуют выпуклый пятиугольник. Далее они предположили, что если на плоскости имеются $2^{n-2}+1$ точки общего положения, то из них всегда можно выбрать $n$ точек, образующих выпуклый $n$-угольник. Однако данное предположение до сих пор остается неподтвержденной и неопровергнутой гипотезой. Результат же, который им удалось доказать, носит название теоремы Эрдеша-Секереша.

\begin{theor}[Эрдеш, Секереш]
Для любого целого положительного $n$ существует целое положительное число $N(n)$, такое, что среди любых $N$ точек общего положения на плоскости найдутся $n$ точек, образующих выпуклый $n$-угольник.
\end{theor}

\evids следует из теоремы Рамсея и из следующей леммы, доказываемой, например, по индукции.

\begin{lemm}
Если все четырехугольники, образованные из $n$ точек общего положения, выпуклые, то эти $n$ точек и являются вершинами выпуклого $n$-угольника.
\end{lemm}

Эрдеш называл публикацию данной теоремы ``статьей со счастливым концом'', так как после ее публикации Секереш и Клейн поженились. Эрдеш же стал самым продуктивным математиком двадцатого века.


\mysubitem Следующий пример ведет свое начало со следующей гипотезы, сформулированной в начале двадцатых годов двадцатого века голландским математиком Баудеттом. Пусть последовательность целых чисел $1,2,3,\ldots$ разделена на две подпоследовательности (то есть покрашена в два цвета). Тогда для любого положительного целого $l$ хотя бы одна из этих подпоследовательностей содержит арифметическую прогрессию $a,a+b,\ldots,a+(l-1)\,b$ длины $l$. 

Три математика, Ван-дер-Варден, Артин и Шреер, в 1926 году совместными усилиями доказали не только эту гипотезу, но и более сильный результат.

\begin{theor}
При любом разбиении множества $\N$ на конечное число классов один из них обязательно содержит сколь угодно длинную арифметическую прогрессию. 
\end{theor}

Доказательство данной теоремы, а также весьма поучительное описание самого процесса этого доказательства и вклада каждого из участников, можно почитать в приложении к книге \cite{Grach}, написанном Ван-дер-Варденом.  


\mysubitem Подводя итоги, можно сказать, что теория Рамсея имеет довольно глубокий философский смысл. Она утверждает, по сути, что любая достаточно большая структура содержит какую-то регулярную подструктуру. Иными словами, она изучает условия, при которых в некоторой достаточно большой структуре появляется определенный порядок. 

Тривиальным примером в данном случае является звездное небо, на котором каждый из нас может увидеть огромное количество созвездий, образующих какие-то заданные конфигурации --- четырехугольники, пятиугольники, или, например, созвездия типа большой ковш. Наличие таких созвездий есть прямое следствие теоремы Эрдеша-Секереша. 

Как правило, основная задача, стоящая перед специалистами в теории Рамсея, заключается в том, чтобы определить, насколько велико должно быть количество объектов в исходной структуре с тем, чтобы в ней гарантированно существовала определенная регулярная подструктура. 



\section*{Упражнения}


\begin{exerc} 
Докажите, что если числа от 1 до 9 покрасить в два цвета, то среди этих чисел обязательно найдутся три числа одного цвета, образующие арифметическую прогрессию.
\end{exerc}

\begin{exerc} 
Докажите, что в перестановке длины $mn+1$ найдется либо возрастающая последовательность длины $n+1$ либо убывающая последовательность длины $m+1$.
\end{exerc}

\begin{exerc} 
Каждая точка трёхмерного пространства покрашена либо в красный либо в чёрный цвет. Докажите, что в этом пространстве найдётся либо единичный квадрат, все вершины которого чёрные, либо единичный квадрат, у которого не меньше трёх красных вершин. 
\end{exerc}

\begin{exerc} 
Докажите оценку для числа Рамсея: $R(n+2,3) > 3n$ при $n > 1$.
\end{exerc}

\begin{exerc} 
Точки плоскости покрашены в три цвета. Докажите, что найдется единичный отрезок, оба конца которого покрашены в один цвет.
\end{exerc}

\begin{exerc} 
Докажите, что $R(3,4) = 9$.
\end{exerc}

\begin{exerc} 
Докажите, что $R(3,5) = 14$.
\end{exerc}


\begin{exerc} 
Целые положительные числа покрашены в цвета $1, 2, \dots, k$. Докажите, что найдется такое $N = N(k)$, что если $n>N$, то найдутся три целых числа $a, b, c$, меньшие $n$, для которых $a+b=c$, и все они имеют один цвет.
\end{exerc}


\begin{exerc} 
Найдите $N(2)$, если $N$ определено как в предыдущей задаче.
\end{exerc}


\section*{Решение упражнений}

\begin{sol_exerc} Пусть числа 4 и 6 покрашены в один (синий) цвет. Тогда либо число 5 либо образует вместе с ними <<синюю>> прогрессию, либо покрашено в красный цвет. Во втором случае либо хотя бы одно из чисел 2 и 8 синее, и образует прогрессию с числами 4 и 6, либо они  оба красные, и нужная прогрессия — 2, 5, 8. 

Если числа 4 и 6 разного цвета, то, не умаляя общности, 4 и 5 имеют красный цвет, а 6 — синий. Пытаясь раскрасить числа так, чтобы избежать одноцветных прогрессий, получаем: 3 — синее, 9 — красное, 7 — синее (иначе есть прогрессия 5, 7, 9), 8 — красное (избегаем прогрессии 6, 7, 8), 2 — синее (избегаем 2, 5, 8), 1 — красное (избегаем 1, 2, 3). Но даже в этом случае найдется <<красная>> прогрессия 1, 5, 9.
\end{sol_exerc}

\begin{sol_exerc}
Доказательство полностью аналогично примеру 1.6.
\end{sol_exerc}

\begin{sol_exerc}
В начале допустим, что не существует отрезка длиною $\sqrt 2$ такого, что оба его конца красные. Выберем какую-нибудь красную точку и рассмотрим сферу радиуса $\sqrt 2$ с центром в этой точке. Все её точки — чёрные. На поверхности этой сферы можно выбрать нужный квадрат. 

Теперь пусть нашёлся отрезок $AB$ длины $\sqrt 2$, у которого оба конца~--- красные. Рассмотрим окружность радиуса $\sqrt 2$ с центром в середине $AB$, но лежащую в перпендикулярной к $AB$ плоскости. Либо эта окружность вся чёрная (тогда на ней есть чёрный единичный квадрат), либо имеет хотя бы одну красную точку $C$. В последнем случае все вершины треугольника $ABC$ красные, а значит его легко дополнить до квадрата, у которого как минимум три красные вершины.  
\end{sol_exerc}

\begin{sol_exerc}
Доказать нужно, по сути, следующий факт: можно так покрасить рёбра полного графа на $3n$ вершинах в красный и синий цвета, чтобы в нём не было ни красных треугольников, ни синих $(n+2)$-подклик. Поступим следующим образом: разместим $3n$ вершин по окружности, и для каждой вершины покрасим в синий цвет те рёбра, которые выходят из неё в $n$ ближайших соседей слева и $n$ ближайших соседей справа. Остальные рёбра покрасим в красный цвет. Легко видеть, что синие $(n+2)$-подклики в этом графе отсутствуют. Красных треугольников также не будет: предположив, что такой треугольник есть, мы получим, что как минимум между одной парой вершин в этом треугольнике расстояние вдоль окружности составляет $n$ вершин или меньше. Но по построению эти вершины соединены синим ребром.
\end{sol_exerc}

\begin{sol_exerc}
Предположим обратное и рассмотрим произвольный ромб со сторонами длины 1 и малой диагональю длины 1. Две его несмежные вершины, лежащие на малой диагонали, имеют разный цвет. Значит, оставшиеся две вершины покрашены в общий, третий цвет. Это доказывает, что любые вершины, между которыми расстояние равно длине $a$ большей диагонали в таком ромбе, покрашены в один цвет. Это значит, что любая окружность радиуса $a$ покрашена в цвет своего центра. На такой окружности, конечно, найдутся две точки на расстоянии 1 друг от друга. Это приводит к противоречию и доказывает требуемое утверждение. 
\end{sol_exerc}

\begin{sol_exerc}
Покажем, что $R(3,4) \leq 9$. Рассмотрим полный граф на 9 вершинах и выберем в нём одну из вершин $v$, такую что либо из неё выходит как минимум шесть синих рёбер, либо как минимум четыре красных ребра. Если бы такой вершины не оказалось, то из каждой вершины бы выходило по 5 синих рёбер, что противоречит тому, что сумму <<синих степеней>> всех вершин чётная. Итак, если из $v$ выходит больше трёх красных рёбер, то выберем произвольные четыре вершины из тех, в которые эти рёбра идут. Эти вершины сами либо образуют синюю 4-клику, либо между ними есть хоть одно красное ребро, и его концы вместе с $v$ образуют красную 3-клику. 

Если синих рёбер из $v$ шесть или больше, то сооветствующие шесть или более вершин образуют граф, в котором есть либо красная 3-клика, либо синяя 3-клика. В последнем случае, добавляя к этой клике $v$, мы получаем синюю 4-клику. 
\end{sol_exerc}

\begin{sol_exerc}
То, что $R(3,5) \leq 14$ следует из результата предыдущего упражнения и теоремы Эрдёша-Секерёша:
$$
R(3,5) \leq R(2,5) + R(3,4) = 5 + 9 = 14.
$$
\end{sol_exerc}

\begin{sol_exerc}
Рассмотрим полный граф $K_N$, в котором ребро между вершинами  с номерами $m$ и $k$ имеет цвет числа $|m-k|$. При большом $N$ в этом графе найдется одноцветный треугольник $xyz$; $x > y > z$. Это значит, что в качестве трёх раскрашенных в один цвет чисел можно взять числа $x-y, y-z, x-z$.
\end{sol_exerc}

\begin{sol_exerc}
Докажем, что $N(2) <= 5$. Для этого, не умаляя общности, число 1 покрасим в красный цвет. Число 2 — в синий (иначе $1+1=2$ — красная тройка чисел). Число 4 — в красный (избегая $2+2=4$). 3 — синее (избегая $1 + 3 = 4$). Теперь, как бы мы ни покрасили 5, получим одну из одноцветных троек $1, 4, 5$ и $2, 3, 5$. Так как первые 4 целых положительных числа можно покрасить так, чтобы указанное свойство не выполнялось (пример: K, C, C, К), то $N(2) = 5$.
\end{sol_exerc}


\section{Элементы теории связности}

\myitem Любая коммуникационная сеть тем более надежна, чем большее количество вершин и/или ребер нужно удалить в графе (или в орграфе), моделирующем эту сеть, для того, чтобы эту сеть оборвать. Раздел теории графов, описывающий такого рода свойства надежности, называется теорией связности. Задача данного параграфа --- изложить самые базовые понятия и утверждения этой теории.

Везде в данном параграфе под графом $G$ будем понимать мультиграф без петель. 

\mysubitem Начнем с определения вершинной связности графа $G$.

\begin{defin}
Подмножество $S\subset V(G)$ называется \emph{вершинным} разделяющим множеством или \emph{вершинным разрезом} графа, если при удалении вершин из множества $S$ граф $G-S$ становится несвязным. 
\end{defin}

\begin{defin}
\emph{Вершинной связностью} $\kappa(G)$ называется минимальное количество вершин $|S|$, $S\subset V(G)$, которое нужно удалить для того, чтобы граф $G-S$ стал несвязным или же содержал единственную вершину.  
\end{defin}

\begin{rem}
У полного графа $K_n$, построенного на $n$ вершинах, вершинное разделяющее множество отсутствует --- удаление любого количества вершин $|S|$ в этом графе не нарушает его связности. Для того, чтобы распространить понятие $k$-связности и на полные графы, нам и нужна оговорка ``или же содержит единственную вершину''. Используя эту оговорку, мы можем, по сути, по определению, положить $\kappa(K_n)=n-1$. 
\end{rem}

Как следствие, граф $K_1$, состоящий из единственной изолированной вершины, имеет связность, равную нулю. Ребро $K_2$ имеет связность, равную единице. Полный граф $K_3$ на трех вершинах имеет связность, равную двум, а дерево $T_3$ --- связность $\kappa(T_3)=1$. Первый нетривиальный простой граф с $\kappa=2$ --- это квадрат $D_4$. 

\mysubitem Связность можно также определить, используя понятие (вершинно)-$k$-связного графа.  

\begin{defin}
Граф $G$ называется (вершинно)-$k$-связным, если он построен на $n\geq (k+1)$ вершине, и при удалении любых вершин графа $G$ в количестве, меньшем, чем $k$, граф остается связным. 
\end{defin}

\begin{defin}
Вершинной связностью $\kappa(G)$ графа $G$ называется максимально возможное $k$, для которого граф остается вершинно-$k$-связным.  
\end{defin}

При таком подходе связность полного графа отдельно оговаривать не надо. 

\begin{examp} 
Граф $K_4$ с $\kappa(K_4)=3$ является $1$-связным, $2$-связным и $3$-связным, но не $4$-связным графом, хотя бы потому, что он построен на четырех вершинах.
\end{examp}

\mysubitem Перейдем теперь к определению реберной связности графа $G$.

\begin{defin}
Подмножество $F\subset E(G)$ называется \emph{реберно-разделяющим множеством} графа $G$, если после удаления всех ребер из $F$ граф $G-F$ перестает быть связным.
\end{defin}

\begin{defin}
\emph{Реберной связностью} $\lambda(G)$ называется количество ребер в минимальном разделяющем множестве $F$ графа $G$. 
\end{defin}

\begin{defin}
Граф $G$, построенный на $n$ вершинах, называется \emph{реберно-$k$-связным,} если он остается связным при удалении любых ребер в количестве, строго меньшем $k$. 
\end{defin}

Понятно, что любой граф с $\lambda(G)=k$ является реберно-$k$-связным, реберно-$(k-1)$-связным и так далее. 

\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}
		\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/cut_sep_set2.eps}
 	\caption{Разделяющее множество}
	\end{subfigure}

	\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/cut_sep_set1.eps}
 	\caption{$[S,\bar{S}]$-разрез}
	\end{subfigure}
\end{tabular}
\caption{Различие между разрезом и разделяющим множеством}
\label{fig:connectivity}
\end{figure}

Для заданных подмножеств $S_1,S_2$ множества вершин $V(G)$ через $[S_1,S_2]$ обозначают подмножество множества $E(G)$ ребер графа, любой элемент которого имеет один конец в $S_1$, а второй --- в $S_2$. 

\begin{defin}
Реберным разрезом графа $G$ называется подмножество ребер $[S,\bar{S}]$, где $S$ есть любое непустое подмножество множества вершин $V(G)$ графа, отличное от $V(G)$, а $\bar{S}=V(G)\setminus S$. 
\end{defin}

\begin{rem} Так как в графе $G-[S,\bar{S}]$ пути между $S$ и $\bar{S}$ отсутствуют, то любой реберный разрез $[S,\bar{S}]$ является реберно-разделяющим множеством. Обратное, конечно же, неверно (смотри рис.\ref{fig:connectivity}). Однако любое минимальное реберно-разделяющее множество $F_{\min}$ обязательно является разрезом.

Действительно, если бы это было не так, то мы могли бы соединить какие-то две компоненты связности графа $G-F_{\min}$ ребром, а граф при этом все равно бы остался несвязным. Но это бы означало, что $F_{\min}$ не есть минимальное реберно-разделяющее множество, чего быть не может.

Заметим, что для вершинного разделяющего множества данное утверждение места не имеет --- удаление минимального вершинно-разделяющего множества может приводить к появлению компонент связности в количестве большем, чем два.
\end{rem}

\mysubitem Обозначим через $\delta(G)$ минимальную из степеней вершин графа $G$. Достаточно очевидно, что реберная связность графа ограничена сверху значением $\delta(G)$. Действительно, удаление всех ребер, инцидентных вершине $x$ с $\deg(x)=\lambda(G)$, превращает любой граф в несвязный. 

Несколько менее тривиальным является следующее 

\begin{propos}
Для любого простого графа $G$ справедливо неравенство
$$
\kappa(G)\leq \lambda(G).
$$
\end{propos}

\evidp Рассмотрим некоторое минимальное реберно-разделяющее множество $[S,\bar{S}]=\{e_1,\ldots,e_k\}$, $k=\lambda(G)$, в графе $G$. Нам нужно показать, что в графе $G$ найдется не более чем $k$ вершин, удаление которых приведет к появлению нескольких несвязных компонент.

На первый взгляд кажется, что данное утверждение доказать несложно. Действительно, удалим для каждого ребра $e_i$ из разреза $[S,\bar{S}]$ одну из двух инцидентных этому ребру вершин. Удаляя такую вершину, мы удаляем и все инцидентные ей ребра, в том числе и ребро $e_i$. Заметив теперь, что количество таких вершин не превосходит количества ребер в множестве $[S,\bar{S}]$, мы, казалось бы, доказываем требуемое неравенство.  

Проблема, однако, состоит в том, что удаление таких вершин не всегда приводит к появлению несвязных компонент в графе. Действительно, рассмотрим, к примеру, дерево $T_n$, построенное на $n\geq 2$ вершинах. Понятно, что для него $\lambda(T_n)=\kappa(T_n)=1$. Удаление любого ребра $e$ приводит к появлению двух компонент связности в графе $T_n-e$. Однако, удаляя в этом графе произвольный лист $x$, мы получим односвязный граф $T_n-x=T_{n-1}$. Поэтому для доказательства неравенства $\kappa(G)\leq \lambda(G)$ нам нужно действовать чуть более осторожно. 


\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}
		\begin{subfigure}[b]{0.32 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/k-l-theor1.eps}
 	\caption{}
	\end{subfigure}

		\begin{subfigure}[b]{0.32 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/k-l-theor2.eps}
 	\caption{}
	\end{subfigure}


\end{tabular}
\caption{}
\label{fig:k-l-theor}
\end{figure}

Предположим вначале, что хотя бы в одном из подмножеств $S,\bar{S}$ найдется вершина $x\in V(G)$, не являющаяся инцидентной ни одному из ребер $e_i\in [S,\bar{S}]$ (см.рис.\ref{fig:k-l-theor},a). Предположим для определенности, что эта вершина принадлежит подмножеству $S$. Тогда, удаляя все вершины $y_i$ блока $S$, инцидентные ребрам из $[S,\bar{S}]$, мы обязательно получим как минимум две компоненты связности --- одну, содержащую вершину $x$, и вторую, содержащую одну или несколько вершин $z_i$ блока $\bar{S}$, инцидентных ребрам $e_1,\ldots,e_k$ исходного графа $G$. Так как количество удаленных вершин не превосходит $k=\lambda(G)$, то мы получаем, что $\kappa(G)\leq \lambda(G)$. 

Рассмотрим теперь граф $G$, в котором любая вершина инцидентна одному из ребер $e_1,\ldots,e_k$. Покажем, что в этом случае у нас обязательно должна найтись вершина $x$, инцидентная ровно одному ребру множества $[S,\bar{S}]$. Предположим, что это не так, то есть предположим, что любая вершина блока $S$ соединена по меньшей мере с двумя вершинами блока $\bar{S}$, и наоборот. В этом случае количество $k$ ребер в разрезе $[S,\bar{S}]$ должно быть больше или равно количеству $n$ вершин в графе. Действительно, удалим все ребра графа $G$, отличные от $e_1,\ldots,e_k$. В получившемся графе $\tilde{G}$ степень любой вершины по-прежнему больше или равна двум, а количество вершин совпадает с количеством вершин в графе $G$. Поэтому, согласно теореме \ref{theor:first_th_gr}, 
$$
2E(\tilde{G})=2k=\sum\limits_{x\in V(\tilde{G})}\deg(x)\geq 2\,|V(\tilde{G})|=2\,|V(G)|=2n\qquad \Longrightarrow \qquad k\geq n.
$$
Но мы знаем, что степень любой вершины в простом графе не превосходит $n-1$. Как следствие, $\delta(G)<\lambda(G)$, чего быть не может. 

Итак, пусть в графе $G$ любая вершина инцидентна одному из ребер $e_1,\ldots,e_k$, и пусть инцидентная только лишь одному из этих ребер вершина $x$ принадлежит блоку $S$. Заметим, что количество вершин в блоке $S$ не может быть больше $k$ --- у нас любая вершина из $S$ инцидентна хотя бы одному ребру из подмножества $[S,\bar{S}]$, а каждое из этих $k$ ребер обязательно выходит из подмножества $S$ вершин (см.рис.\ref{fig:k-l-theor},b). Следовательно, степень вершины $x$ не может быть больше $k$ --- вершина $x$ может быть соединена с каждой из оставшихся вершин $S$ (а их не более $k-1$), а также ровно с одной вершиной из блока $\bar{S}$. Но $\kappa(G)\leq \delta(G)\leq \deg(x)\leq k=\lambda(G)$, поэтому и в этом случае $\kappa(G)$ не превосходит $\lambda(G)$.   \qed

\begin{rem}
Достаточно очевидно, что неравенство $\kappa(G)\leq \lambda(G)$ справедливо не только для простых графов, но и для любых графов с мультиребрами. Действительно, увеличивая количество ребер между смежными вершинами,  мы разве что увеличиваем $\lambda(G)$. Этот процесс, однако, никак не влияет на значение $\kappa(G)$. 
\end{rem}

Таким образом, мы для произвольных графов доказали справедливость цепочки неравенств
$$
\kappa(G)\leq \lambda(G)\leq \delta(G).
$$
Простейший пример графа, для которого эти неравенства являются строгими, показан на рис.\ref{fig:connectivity_sol_1_2_3}. Для полного графа, с другой стороны, все эти числа одинаковы и равны $(n-1)$. 


\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/connectivity_1_2_3.eps}
\caption{}
\label{fig:connectivity_sol_1_2_3}
\end{figure}



\myitem Перейдем теперь к описанию односвязных графов. Все множество таких графов можно разбить на два блока, отнеся к первому блоку графы с $\kappa(G)=1$, а ко второму блоку --- все двусвязные графы. Постараемся понять, в чем состоит принципиальное отличие двусвязных графов от графов, связность которых равна единице, а также разобраться со структурой этих графов. 

\mysubitem Из определения связности следует, что разделяющее множество для графов с $\kappa(G)=1$ состоит ровно из одной вершины. Эта вершина называется \emph{точкой сочленения} графа $G$. Соответственно, двусвязный граф --- это связный граф, построенный на не менее чем трех вершинах, у которого точки сочленения отсутствуют. 

Напомним, что любой несвязный граф естественным образом разбивается на блоки --- компоненты связности такого графа. Оказывается, что и любой граф с $\kappa(G)=1$ также можно разбить на блоки, введя очень полезное отношение похожести на множестве $E(G)$ всех ребер графа $G$.

\begin{defin}
Два ребра называются \emph{похожими,} если они либо совпадают (то есть любое ребро похоже на само себя), либо входят в один и тот же простой цикл.
\end{defin}

\begin{lemm} 
Отношение похожести в связном графе $G$ есть отношение эквивалентности. 
\end{lemm}

\evidp Рефлексивность и симметричность такого отношения очевидны, так что нам остается проверить транзитивность. Пусть ребра $e_1,e_2$ входят в простой цикл $C_1$, а ребра $e_2,e_3$ --- в простой цикл $C_2$ графа $G$. Возьмем ребро $e_1$ и будем идти от него вдоль цикла $C_1$ в двух противоположных направлениях до тех пор, пока не дойдем до вершин $x$ и $y$, $x\neq y$, принадлежащих циклу $C_2$ (смотри рисунок \ref{fig:cycles}). Такие вершины обязательно найдутся хотя бы потому, что ребро $e_2$ входит в цикл $C_2$, так что две инцидентные этому ребру вершины обязательно этому циклу $C_2$ принадлежат. Заметим теперь, что вершины $x$ и $y$ разбивают цикл $C_2$ на два простых пути, соединяющих данные вершины. Один из этих простых путей содержит ребро $e_3$. Объединяя этот простой путь с куском цикла $C_1$, содержащим ребро $e_1$ и ограниченным вершинами $x$ и $y$, получим простой цикл $C$, содержащий ребра $e_1$ и $e_3$. Тем самым мы доказали, что ребра $e_1$ и $e_3$ похожи. \qed


\begin{figure}[h]
\centering
\includegraphics[scale=0.6]{pics/cycles.eps}
\caption{}
\label{fig:cycles}
\end{figure}


\mysubitem Отношение похожести, как и любое отношение эквивалентности, разбивает множество $E(G)$ ребер на классы эквивалентности, называемые \emph{блоками} связного графа $G$. Каждый такой блок представляет собой либо простое ребро $K_2$, либо группу из нескольких ребер, объединенных в один или несколько пересекающихся между собой циклов. Оказывается, что такая группа ребер есть не что иное, как двусвязный подграф графа $G$. Именно, справедлива

\begin{theor} \label{theor:descr_2_conn_graphs}
Пусть $G$ есть связный граф, построенный на $n\geq 3$ вершинах. Следующие три утверждения равносильны:
\begin{itemize}
\item[(1)] граф $G$ является двусвязным;
\item[(2)] любые два ребра этого графа принадлежат некоторому циклу $C$;  
\item[(3)] для любых двух вершин графа $G$ существует цикл $C$, проходящий через эти вершины.
\end{itemize}
\end{theor}

\evidp Предположим вначале, что граф $G$ является двусвязным. Рассмотрим в таком графе любые два ребра $e_1=\{x,y\}$ и $e_2=\{x,z\}$, инцидентные одной и той же вершине $x$. Так как граф $G-x$ является связным, то существует простой путь $P$, соединяющий вершины $y$ и $z$. Объединяя путь $P$ с ребрами $e_1$ и $e_2$, получаем простой цикл $C$ в графе $G$. 

Таким образом, любые два ребра, инцидентные одной и той же вершине двусвязного графа, принадлежат одному и тому же циклу. Иными словами, эти два ребра являются похожими. Но отношение похожести транзитивно, поэтому из похожести любых двух соседних ребер следует похожесть любых двух ребер графа $G$. 

Пусть теперь любые два ребра графа $G$ принадлежат некоторому циклу $C$. Выберем любые две вершины $x_1$, $x_2$ нашего графа и рассмотрим два различных ребра $e_1$ и $e_2$, инцидентных этим вершинам. Цикл $C$, содержащий два этих ребра, обязательно проходит через выбранные нами вершины $x_1$ и $x_2$.  

Последнее, что осталось --- это доказать, что если через любые две вершины графа $G$ проходит цикл $C$, то граф является двусвязным, то есть не содержит точек сочленения. А это утверждение достаточно очевидно. Действительно, пусть такой граф содержит точку сочленения $x\in V(G)$. Обозначим через $G_1$ и $G_2$ две компоненты связности, полученные в результате удаления вершины $x$, а через $y_1\in G_1$ и $y_2\in G_2$ --- пару вершин, инцидентных вершине $x$ в исходном графе. Так как в графе $G-x$ нет пути, соединяющего вершины $y_1$ и $y_2$, то и в исходном графе $G$ нет цикла, проходящего через эти вершины. Полученное противоречие доказывает нашу теорему. \qed



\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/blocks-points.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/blocks-points2.eps}
 	\caption{}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:blocks-points}
\end{figure}




\mysubitem Итак, рассмотрим произвольный односвязный граф $G$ (смотри рис.\ref{fig:blocks-points},a). Отношение похожести разбивает множество ребер графа на блоки, представляющие собой либо ребра $K_2$, либо двусвязные подграфы графа $G$, максимальные по включению (то есть не содержащиеся ни в каком большем двусвязном подграфе). Эти блоки соединены между собой точками сочленения (черные вершины на рис.\ref{fig:blocks-points},a). 

Используя описанное выше разбиение, по графу $G$ можно построить двудольный граф $B(G)$ (рис.\ref{fig:blocks-points},b), описывающий блочную структуру исходного графа $G$. Одна доля графа $B(G)$ состоит из точек $x_j$ сочленения графа $G$ (черные вершины на рис.\ref{fig:blocks-points},b), а вторая --- из вершин $b_i$, каждая из которых отвечает некоторому блоку $B_i$ исходного графа $G$ (светлые вершины на рис.\ref{fig:blocks-points},b). Вершины $x_j$ и $b_i$ соединяются в графе $B(G)$ ребром в случае, если в исходном графе вершина $x_j$ принадлежала блоку $B_i$. 

Более-менее понятно, что построенный таким образом двудольный граф $B(G)$ является деревом. Это дерево называется деревом блоков и точек сочленения исходного графа $G$. Любая точка сочленения обязательно является внутренней вершиной дерева $B(G)$, тогда как вершины $b_i$, отвечающие блокам дерева $G$, могут быть как внутренними вершинами $B(G)$, так и его листьями. Блок, отвечающий листу дерева $B(G)$, называется крайним блоком графа $G$. Понятно, что блок графа $G$ является крайним тогда и только тогда, когда он содержит только одну точку сочленения графа $G$. 


\mysubitem Итак, мы достаточно подробно описали структуру графов с $\kappa(G)=1$. Постараемся теперь понять структуру двусвязного графа. 

Оказывается, существует достаточно удобный конструктивный способ построения двусвязного графа --- любой такой граф может быть построен из некоторого цикла $C=P_0$ последовательным добавлением к нему так называемых ручек $P_i$.

\begin{defin}
Пусть $H$ есть некоторый подграф графа $G$. \emph{Ручкой} подграфа $H$ в графе $G$ называется простой путь $P$, концы которого принадлежат $H$, а все внутренние вершины которого этому подграфу не принадлежат (смотри рис.\ref{fig:ear_decomp},a).
\end{defin}



\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/ear_decomp1.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/ear_decomp.eps}
 	\caption{}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:ear_decomp}
\end{figure}




\begin{defin}
Разложением графа $G$ на ручки называется последовательность $P_0,\ldots,P_k$ подграфов графа $G$, такая, что $P_0$ представляет собой цикл, $P_i$ для любого $i=1,\ldots,k$ представляет собой ручку для подграфа $G_i=P_0\cup\ldots\cup P_{i-1}$ графа $G$, а $G_k$ совпадает с исходным графом $G$ (смотри рис.\ref{fig:ear_decomp},b).
\end{defin}

В упражнении \ref{exerc:ear_decomp} предлагается доказать следующее 

\begin{propos}\label{propos:ear_decomp}
Любой двусвязный граф $G$ допускает разложение $G$ на ручки, начинающееся с произвольного цикла в этом графе.
\end{propos}

\mysubitem В заключение данного пункта рассмотрим реберно-двусвязные графы. 

\begin{defin} 
Ребро $e\in E(G)$ называется \emph{мостом,} если получающийся после его удаления граф $G-e$ становится несвязным. 
\end{defin}

Ясно, что любой реберно-двусвязный граф --- это связный граф, не содержащий мостов. Такое описание имеет один недостаток --- оно показывает нам, чего в графе быть не должно для того, чтобы он был реберно-двусвязным. Нам же часто нужно более конструктивное описание такого графа, похожее на то, что мы только что описали для вершинно-двусвязного графа. 

Заметим, прежде всего, что в силу неравенства $\kappa(G)\leq \lambda(G)$ любой вершинно-двусвязный граф является одновременно и реберно-двусвязным графом. Обратное, однако же, неверно. На рис.\ref{fig:edge_2_conn} в качестве примера показан граф-бабочка, являющийся реберно-двусвязным, но имеющим точку сочленения $x$. Иными словами, реберно-двусвязных графов больше, нежели чем вершинно-двусвязных графов. Как следствие, декомпозиция реберно-двусвязного графа должна быть несколько более сложной по сравнению с декомпозицией вершинно-двусвязного графа. 


\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/edge_2_conn.eps}
\caption{}
\label{fig:edge_2_conn}
\end{figure}



Как видно из рис.\ref{fig:edge_2_conn}, реберно-двусвязный подграф может содержать один или несколько циклов, имеющих с оставшейся частью графа только лишь одну общую точку. Такого рода цикл называется \emph{замкнутой ручкой.} В упражнении \ref{exerc:closed_ear_decomp} предлагается доказать, что любой реберно-двусвязный граф можно разложить на ручки и замкнутые ручки, начиная с произвольного замкнутого цикла $C$ в исходном графе. 


\myitem Перейдем теперь к более общему понятию $k$-связных графов, а также к изложению основных фактов, связанных с этим понятием.

\mysubitem Отметим, прежде всего, простое следствие теоремы \ref{theor:descr_2_conn_graphs}.

\begin{conseq}[Whitney, 1932] 
Граф, построенный на трех или более вершинах, является двусвязным тогда и только тогда, когда для любой пары $x,y$ вершин графа $G$ найдутся два простых пути, соединяющих $x$ и $y$, и не имеющих общих внутренних вершин. 
\end{conseq}

\evids легко следует из теоремы \ref{theor:descr_2_conn_graphs} --- любой проходящий через вершины $x$ и $y$ цикл можно рассматривать как пару простых путей, соединяющих эти вершины и не имеющих никаких других общих вершин. 

Заметим, что отмеченное свойство можно рассматривать как альтернативное определение двусвязного графа, а именно, называть граф двусвязным в случае, если для любой пары вершин можно найти два простых пути, соединяющих эти вершины и не имеющих общих внутренних вершин. 

Оказывается, данное утверждение имеет место и для произвольного $k$-связного графа --- теорема, доказанная австрийским математиком Карлом Менгером в 1927 году, позволяет сформулировать понятие $k$-связного графа не на языке вершинного разреза, а на языке путей, соединяющих произвольную пару вершин в графе. 

\mysubitem Для формулировки данной теоремы нам понадобится несколько вспомогательных понятий.

\begin{defin} Пусть $X,Y\subset V(G)$. Путем между $X$ и $Y$ называется любой простой путь, начальная вершина которого принадлежит множеству $X$, конечная --- множеству $Y$, а все внутренние вершины не принадлежат ни множеству $X$, ни множеству $Y$.
\end{defin}

\begin{rem} 
Не исключен случай, когда $X\cap Y\neq \emptyset$. Поэтому данным определением допускаются и так называемые \emph{тривиальные} пути, каждый из которых состоит из единственной вершины $x\in X\cap Y$. 
\end{rem}

\begin{defin}
Пусть $X,Y$ и $R$ есть некоторые подмножества множества $V(G)$ вершин. Говорят, что $R$ \emph{отделяет} множество $X$ от множества $Y$, если любой путь из $X$ в $Y$ проходит через вершины множества $R$.
\end{defin}

\begin{rem} Обратим внимание на отличие отделяющего $X$ от $Y$ множества от вершинного разделяющего граф $G$ множества. При удалении вершинного разделяющего множества граф становится несвязным. От множества, которое отделяет $X$ от $Y$, этого не требуется. Действительно, само множество $X$ отделяет $X$ от $Y$, а граф $G-X$ вполне может остаться связным. 
\end{rem}

Обозначим через $k$ количество вершин в минимальном отделяющем $X$ от $Y$ множестве. Как мы уже отмечали ранее, $X$ всегда отделяет себя от $Y$ и наоборот. Поэтому $k\leq \min(|X|,|Y|)$. В случае, если между $X$ и $Y$ пути отсутствуют, $k=0$. В остальных случаях $k>0$. 

\begin{theor}\label{theor_Heuring}
Пусть $X,Y$ --- пара подмножеств множества $V(G)$. Тогда количество $k$ вершин в минимальном отделяющем $X$ от $Y$ множестве $R$ совпадает с максимальным количеством непересекающихся друг с другом путей из $X$ в $Y$.  
\end{theor}

\evidp 
Пусть $l$ есть максимальное количество непересекающихся путей из $X$ в $Y$. Понятно, что $l$ не может превосходить количества $k$ вершин в минимальном отделяющем $X$ от $Y$ множестве $R$ --- в противном случае, согласно принципу Дирихле, через какую-то вершину этого множества проходило бы два или более простых путей, чего быть не может. Теорема утверждает, что эти два числа на самом деле равны. Иными словами, нам нужно доказать, что в графе $G$ обязательно найдутся ровно $k$ непересекающихся путей из $X$ в $Y$.

Сразу заметим, что в двух тривиальных случаях $k=0$ и $k=1$ теорема верна. Действительно, случай $k=0$ по определению означает, что пути между $X$ и $Y$ отсутствуют. В случае, когда минимальное отделяющее $X$ от $Y$ множество состоит из одной вершины $x$, нам годится любой путь из $X$ в $Y$, проходящий через $x$. 

Доказательство теоремы в случае $k>1$ проведем индукцией по количеству вершин и ребер в графе. В качестве базы индукции мы можем взять граф $\bar{K}_2$, состоящий из двух изолированных вершин, в котором $X=Y=\bar{K}_2$ (рис.\ref{fig:menger},a). Возьмем теперь некоторый граф $G\neq \bar{K}_2$, в котором существуют множества вершин $X$ и $Y$, такие, что размер минимального отделяющего $X$ от $Y$ множества $R$ равен $k>1$. Докажем наше утверждение для $G$, $X$ и $Y$ при условии, что для всех графов с меньшим количеством вершин и/или ребер теорема \ref{theor_Heuring} верна.  


\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/menger1.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/menger2.eps}
 	\caption{}
	\end{subfigure}
	
\\
\\
\\

	\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/menger3.eps}
 	\caption{}
	\end{subfigure}
	
	
	\begin{subfigure}[b]{0.45 \textwidth}
	\centering
    		\includegraphics[scale=0.6]{pics/menger4.eps}
 	\caption{}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:menger}
\end{figure}



Рассмотрим вначале случай, когда в графе $G$ существует вершина $x\in X\cap Y$. В таком случае в графе $G-x$ минимальное отделяющее $X$ от $Y$ множество $R'$ содержит $(k-1)$-у вершину. Тогда, по предположению индукции, в $G-x$ имеется $(k-1)$ непересекающийся путь из $X$ в $Y$. Добавляя к этому набору тривиальный путь $\{x\}$, получаем набор из $k$ непересекающихся путей в графе $G$. 

В случае $X\cap Y =\emptyset$ в графе обязательно найдется хотя бы один путь из $X$ в $Y$, содержащий ребро $e=\{x,y\}$, такое, что $x\notin Y$, а $y\notin X$. Предположим вначале, что при удалении этого ребра размер минимального отделяющего $X$ от $Y$ множества $R'$ не уменьшится (рис.\ref{fig:menger},b). Тогда, по индукционному предположению, в графе $G-e$ найдется $k$ непересекающихся друг с другом путей из $X$ в $Y$. Добавление же ребра $e$ это количество путей никак не изменит. 

Теперь предположим, что при удалении ребра $e=\{x,y\}$ размер отделяющего $X$ от $Y$ множества $R'$ в графе $G$ уменьшился. Рассмотрим тогда множества вершин $R_x=R'\cup \{x\}$ и $R_y=R'\cup\{y\}$. Ясно, что эти множества отделяют $X$ от $Y$ и содержат ровно $k$ вершин. Кроме того, хотя бы одно из множеств $R_x,R_y$ не совпадает ни с $X$, ни с $Y$. Действительно, в противном случае $R'=X\cap Y$ (рис.\ref{fig:menger},c), $|R|\geq k-1\geq 1$, что противоречит условию $X\cap Y = \emptyset$.

Итак, нам осталось доказать теорему в случае, когда у нас существует множество $R$, отделяющее $X$ от $Y$, не совпадающее ни с $X$, ни с $Y$, и содержащее ровно $k$ вершин (рис.\ref{fig:menger},d). Тогда $\bar{X}:=X\setminus R\neq \emptyset$ и $\bar{Y}:=Y\setminus R\neq \emptyset$. Удалим в графе $G$ все вершины множества $\bar{Y}$. Рассмотрим в получившемся графе $G'$ множества $X$ и $R$. Эти множества не совпадают, причем $|X|\geq k$, а $|R|=k$. Любое отделяющее $X$ от $R$ множество в графе $G'$, если оно существует, содержит не менее, чем $k$ вершин --- в противном случае мы бы и в исходном графе $G$ смогли отделить $X$ от $Y$, удалив эти вершины. Но тогда, по индукционному предположению, в графе $G'$ существует $k$ непересекающихся путей из $X$ в $R$. Аналогично доказывается, что в графе $G''=G-\bar{X}$ существует $k$ непересекающихся путей из $R$ в $Y$. Так как $|R|=k$, то мы всегда можем состыковать эти пути с ранее построенными путями из $X$ в $R$ и получить искомый набор путей, соединяющих $X$ и $Y$ в исходном графе $G$. \qed

\begin{conseq}[Менгер, 1927]
Пусть $x,y\in V(G)$ --- две несмежные вершины графа $G$. Тогда количество $k$ вершин в наименьшем вершинном разделяющем $x$ и $y$ множестве $R$ совпадает с наибольшим количеством простых путей из $x$ в $y$, не имеющих общих внутренних вершин. 
\end{conseq}

\evidp Действительно, пусть $x,y$ --- две несмежные вершины графа $G$, удовлетворяющие условиям теоремы Менгера. Рассмотрим множество $X$ вершин, смежных с $x$, и множество $Y$ вершин, смежных с $y$. Любое из этих двух множеств разделяет вершины $x$ и $y$. Кроме того, любой простой путь из $x$ в $y$ проходит через какие-то вершины $x_i\in X$ и $y_i\in Y$ (в частном случае эти вершины могут и совпадать). Поэтому любое множество $R$ вершин, отделяющее $X$ от $Y$, разделяет вершины $x$ и $y$. Следовательно, $|R|\geq k$. Тогда, согласно теореме \ref{theor_Heuring}, существует $k$ попарно непересекающихся путей из $X$ в $Y$. Продолжая эти пути до точек $x$ и $y$, мы тем самым доказываем справедливость теоремы Менгера. \qed



\mysubitem Теорема Менгера описывает количество путей между произвольной парой вершин в графе, и потому называется локальной теоремой. Глобальная ее версия, доказанная Уитни в 1932 году, позволяет переформулировать определение $k$-связных графов на языке путей, соединяющих в графе произвольную пару вершин.

\begin{theor}[Уитни, 1932] Простой граф $G$ является $k$-связным тогда и только тогда, когда между любыми двумя его вершинами $x$ и $y$ существует $k$ путей, не имеющих общих внутренних вершин.
\end{theor}

\evidp В одну сторону утверждение очевидно --- если между любыми двумя вершинами простого графа существует $k$ не имеющих общих внутренних вершин путей, то количество вершин в графе больше $k$, и в нем не существует разделяющего множества, содержащего менее, чем $k$ вершин. Поэтому такой граф $k$-связен.

Теперь предположим, что граф $G$ является $k$-связным. Если вершины $x$ и $y$ несмежны, то существование $k$ путей между ними сразу следует из теоремы Менгера. Поэтому далее будем рассматривать случай, когда в графе $G$ существует ребро $e=\{x,y\}$. 

Пусть в графе $G-e$ наибольшее количество путей из $x$ в $y$, не имеющих общих внутренних вершин, меньше, чем $(k-1)$. Из теоремы Менгера следует, что в таком случае в графе $G-e$ существует разделяющее $x$ и $y$ множество $R$, мощность которого равна $(k-2)$. В любом $k$-связном графе имеется как минимум $(k+1)$ вершина, поэтому в графе $G$ наряду с $x$, $y$ и вершинами множества $R$ существует еще хотя бы одна вершина $z$. Множество $R$ отделяет эту вершину в графе $G-e$ от одной из вершин $x$ или $y$, например, от вершины $x$. Но тогда множество $R\cup\{y\}$, $|R\cup\{y\}|=(k-1)$, отделяет вершину $x$ от вершины $z$ в исходном графе $G$, что противоречит определению $k$-связного графа.  
\qed  

\myitem Перейдем теперь к реберно-$k$-связным графам. Как и следовало ожидать, и для таких графов имеет место аналог вершинной теоремы Менгера.

\begin{theor}[Реберная теорема Менгера]
Максимальное количество реберно непересекающихся простых путей, соединяющих две различные вершины $x$ и $y$ связного графа $G$, совпадает с размером минимального реберно-разделяющего вершины $x$ и $y$ множества $R\subset E(G)$. 
\end{theor}

Интересно заметить, что доказано оно было лишь в 1956 году как следствие более общего результата --- теоремы Форда-Фалкерсона о максимальном потоке в сети. В силу чрезвычайной важности теоремы Форда-Фалкерсона нам также будет полезно вначале сформулировать и доказать этот более общий результат, а затем из него как частный случай получить реберную теорему Менгера (см. упражнение \ref{edge-menger}). 

\mysubitem Для того, чтобы сформулировать теорему Форда-Фалкерсона, нам необходимо ввести несколько дополнительных понятий. Начнем с понятия сети. 

Неформально, сеть можно представлять себе как некоторую систему, транспортирующую какой-то продукт (людей, нефть, воду, электричество) из одного места в другое. Если каналы такой сети представить ориентированными ребрами, а промежуточные станции --- вершинами, то мы получим некоторый простой слабо связный орграф в качестве математической модели данной системы. От рассматриваемых ранее орграфов он, однако, отличается некоторыми дополнительными деталями. 

Именно, для любого канала нашей системы можно определить пропускную способность этого канала как максимальное количество транспортируемого продукта, которое можно пропустить через данный канал в единицу времени. Как следствие, любому ориентированному ребру $(x,y)$ мы должны приписать некоторое неотрицательное вещественное число $c(x,y)$, называемое пропускной способностью этого ребра $e=(x,y)$. Соответствующий орграф называется взвешенным орграфом. 

Далее, в простейшем случае можно считать, что система сконструирована для передачи продукта из единственного места добычи в единственное же место потребления данного продукта. На языке теории графов это означает, что в орграфе $D$ имеются две выделенные вершины --- источник $s$ и сток $t$. Степень входа вершины $s$ равна нулю, то есть в источник ничего не втекает. Напротив, у вершины $t$ равна нулю степень выхода --- из этой вершины ничего вытекать не должно.  

Теперь мы можем дать формальное определение сети. 

\begin{defin} Пусть среди вершин простого орграфа $D$ выделены две вершины $s$ и $t$, называемые источником и стоком, такие, что $\indeg(s)=\outdeg(t)=0$. Пусть, кроме того, на множестве $E\subset V\times V$ ребер орграфа $D$ определена вещественная неотрицательная функция $c(x,y)$. Тогда орграф $D=(V,E,s,t,c)$ называется \emph{сетью,} а функция $c(x,y)$ --- \emph{пропускной способностью} сети $D$. 
\end{defin}

\mysubitem Предположим, что мы по нашей системе транспортируем какое-то количество $Q$ продукта в единицу времени из места добычи этого продукта в место его потребления. Это означает, что какая-то часть этого продукта транспортируется через каждый отдельно взятый канал нашей системы. Кроме того, согласно закону сохранения вещества, количество прибывающего на каждую промежуточную станцию продукта равно количеству исходящего из данной станции продукта. 

Для того, чтобы описать все вышесказанное на языке теории графов, нам нужно ввести понятие потока в сети. 

\begin{defin}
\emph{Потоком} в сети $D$ из вершины $s$ в вершину $t$ называется неотрицательная вещественная функция, определенная на множестве $E(D)$ ребер орграфа $D$ и удовлетворяющая следующим условиям:
\begin{enumerate}
\item для любых $(x,y)\in E(D)$ функция $f(x,y)\leq c(x,y)$;
\item для любой вершины $x\in V$, отличной от $s$ и $t$, справедливо равенство
$$
\sum\limits_{x:\,(x,y)\in E(D)}f(x,y)=\sum\limits_{z:\,(y,z)\in E(D)}f(y,z).
$$
\end{enumerate}
Число 
$$
Q:=\sum_{x:\,(s,x)\in E(D)}f(s,x),
$$
характеризующее количество исходящего из источника $s$ в единицу времени продукта, называется при этом \emph{величиной} данного потока. В силу закона сохранения потока, эта же величина характеризует количество входящего в сток $t$ продукта. 
\end{defin}

\mysubitem Основной задачей, связанной с потоками в сетях, является задача максимизации потока $Q$ в заданной сети $D$. Можно показать, что эта задача представляет собой задачу линейного программирования. Как и всякая задача линейного программирования, такая задача имеет и двойственную к ней задачу линейного программирования, а именно, задачу о нахождении так называемого минимального разреза в сети.

\begin{defin}
Пусть $(S,T)$ есть разбиение множества $V$ вершин орграфа $D$ на два блока $S$ и $T$, таких, что вершина $s\in S$, а вершина $t\in T$. Тогда подмножество ребер 
$$
R(S,T):=\{e=(x,y)\in E(D)\,\mid\,x\in S,\,y\in T\}
$$ 
называется \emph{$(S,T)$-разрезом} сети $D$, а величина
$$
c(S,T):=\sum\limits_{(x,y)\in R(S,T)}c(x,y)
$$
называется \emph{пропускной способностью} данного разреза. 
\end{defin}

Нас будут интересовать разрезы, пропускная способность которых минимальна. Любой такой разрез мы и будем называть \emph{минимальным разрезом.} 

\mysubitem Зафиксируем некоторый поток в сети $D$. Более-менее очевидно, что величина $Q$ этого потока не может превосходить пропускной способности \emph{любого} разреза сети $D$. Как следствие, величина любого \emph{максимального} потока не превышает пропускной способности любого \emph{минимального} разреза. То, что они совпадают, и составляет содержание теоремы Форда-Фалкерсона.

\begin{theor}[L. R. Ford, D. R. Fulkerson, 1956] \label{theor:Ford_Fulkerson}
Во всякой сети величина любого максимального потока равна пропускной способности любого минимального разреза.
\end{theor} 

\evidp В принципе, для доказательства данной теоремы можно сослаться на соответствующий результат из теории линейного программирования. Однако мы все же приведем прямое доказательство данного результата, которое полезно тем, что с его помощью можно построить довольно эффективный алгоритм построения максимального потока в сети.

Предположим, что в сети $D$ максимальный поток существует. Наша задача --- построить в этой сети $(S,T)$-разрез, пропускная способность которого совпадает с величиной максимального потока. 

Для этого рассмотрим вместо $D$ неориентированный граф $G$, полученный из исходного орграфа заменой всех ориентированных ребер на неориентированные. Разобъем множество $V(G)$ вершин этого графа на два блока $S$ и $T$ следующим образом. К блоку $S$ отнесем вершину $s$, а также любую вершину $x\in V(G)$, для которой существует простой путь $(s=x_0,x_1,\ldots,x_k=x)$ из $s$ в $x$, такой, что любому ребру $\{x_i,x_{i+1}\}\in E(G)$ данного пути соответствует
\begin{itemize}
\item[(1)] либо ориентированное ребро $(x_i,x_{i+1})$ графа $D$, значение $f(x_i,x_{i+1})$ на котором строго меньше $c(x_i,x_{i+1})$ (в этом случае говорят, что ребро $\{x_i,x_{i+1}\}\in E(G)$ соответствует \emph{ненасыщенному} ребру $(x_i,x_{i+1})\in E(D)$),
\item[(2)] либо ориентированное ребро $(x_{i+1},x_i)$ графа $D$, направленное навстречу построенному пути, значение $f(x_{i+1},x_i)$ на котором строго больше нуля.
\end{itemize}

Покажем теперь, что множество $T=V\setminus S$ не пусто и, в частности, обязательно содержит вершину $t$. Действительно, предположим, что это не так. Тогда в графе $G$ существует простой путь из $s$ в $t$, все ребра которого удовлетворяют описанным выше свойствам $(1)-(2)$ (так называемый увеличивающий или ненасыщенный путь). Эти свойства означают, что существует положительное число $\epsilon$, которое, во-первых, не превосходит ни одного числа $c(x_i,x_{i+1})-f(x_i,x_{i+1})$, необходимого для насыщения любого ребра первого типа, а во-вторых, не превышает ни одной величины потока $f(x_{i+1},x_i)$ через любое из ребер второго типа. Добавим эту величину $\epsilon$ к потоку $f(x_i,x_{i+1})$ через каждое ребро первого типа и вычитем ее из потока $f(x_{i+1},x_i)$ через каждое ребро второго типа. В результате мы получим новый поток, величина которого превосходит величину исходного потока на значение $\epsilon>0$. Однако это невозможно --- по предположению, величина исходного потока была максимальной. Следовательно, вершина $t$ обязательно принадлежит множеству $T$, то есть это множество $T$ не пусто. 

\begin{figure}[h]
\centering
\includegraphics[scale=0.9]{pics/flow.eps}
\caption{Поток и увеличивающий путь}
\label{fig:flow}
\end{figure}



Для завершения доказательства остается понять, что построенное разбиение множества вершин на два блока $S$ и $T$ является $(S,T)$-разрезом, пропускная способность которого совпадает с величиной максимального потока. Но это действительно так: по построению множества $S$, любое ребро, идущее из $S$ в $T$, является насыщенным, а поток на любом ребре, идущем из $T$ в $S$, равен нулю. Следовательно, поток через $(S,T)$ в точности равен пропускной способности разреза $(S,T)$. \qed

\begin{rem}
Идеи, положенные в основу доказательства теоремы Форда-Фалкерсона, можно использовать для построения достаточно эффективного алгоритма нахождения максимального потока в сети \cite{dasgupta,Korman}. Именно, положим на первом шаге алгоритма $f(x,y)=0$ для всех $(x,y)\in E(D)$. Рассмотрим далее произвольный простой путь из $s$ в $t$ и увеличим поток в сети на описанную в доказательстве теоремы величину $\epsilon$. На следующем шаге найдем произвольный ненасыщенный путь из $s$ в $t$ в нашей сети и увеличим поток на величину $\epsilon$, сосчитанную для данного пути. Будем продолжать процесс до тех пор, пока в сети не останется ненасыщенных путей. В случае, если этот процесс завершится, результирующий поток будет максимальным. 

Основным недостатком этого алгоритма является тот факт, что время его работы существенно зависит от выбора ненасыщенного пути на каждом шаге алгоритма. При неудачном выборе этих путей данный алгоритм может вообще никогда не завершиться (смотри упражнение \ref{exerc-non-converge}). Можно показать, однако (смотри упражнение \ref{exerc:c_x_y_in_Z}), что в случае целочисленных значений пропускных способностей $c(x,y)$ мы всегда получим максимальный поток за конечное число шагов алгоритма. Кроме того, этот алгоритм несложно подправить так, чтобы он всегда сходился. Подробнее об этой модификации метода Форда-Фалкерсона, известной как алгоритм Эдмонса-Карпа, можно посмотреть в \cite{dasgupta,Korman}.  
\end{rem}


\section*{Упражнения}

\begin{exerc}
Доказать, что $\kappa(G)<n-1$ для всех графов $G$, отличных от $K_n$.
\end{exerc}

\begin{exerc} 
Доказать, что у $k$-связного графа, построенного на $n$ вершинах, должно быть как минимум $\lceil kn/2 \rceil$ ребер. 
\end{exerc}

\begin{exerc} 
Возьмем $n$ вершин и расставим их равномерно по кругу. Зафиксируем некоторое четное натуральное число $k<n$ и проведем из любой вершины $k$ ребер, соединив эту вершину с $k/2$ вершинами слева по кругу от нее и с $k/2$ вершинами справа по кругу от нее. В результате получим $k$-регулярный граф, построенный на $n$ вершинах. Доказать, что для такого графа $\kappa(G)=k$. 
\end{exerc}

\begin{exerc} 
Модифицировать описанный в предыдущем упражнении алгоритм построения графа с $\kappa(G)=k$ для случая нечетного $k$ и четного $n$.
\end{exerc}

\begin{exerc} 
Привести пример графа $G$ с $\kappa(G)=2$, $\lambda(G)=3$, $\delta(G)=4$. 
\end{exerc}

\begin{exerc} 
Пусть у нас задана тройка натуральных чисел $\kappa<\lambda<\delta$. Привести алгоритм построения графа $G$, у которого $\kappa(G) = \kappa$, $\lambda(G)= \lambda$, а $\delta(G) = \delta$.
\end{exerc}



\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}

		\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/connectivity_1.eps}
 	\caption{}
	\end{subfigure}

	\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/connectivity_2.eps}
 	\caption{}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:connectivity}
\end{figure}


\begin{exerc} 
Определите значения  $\kappa(G)$, $\lambda(G)$ и $\delta(G)$ для графов, представленных на рис.\ref{fig:connectivity}. 
\end{exerc}


\begin{exerc} 
Доказать, что для любого $3$-регулярного графа $G$ реберная и вершинная связность совпадают.
\end{exerc}

\begin{exerc} 
Найдите наименьший $3$-регулярный граф $G$, для которого $\kappa(G)=1$.
\end{exerc}

\begin{exerc} 
Показать, что в каждом связном графе, имеющем хотя бы две вершины, найдутся по меньшей мере две вершины, не являющиеся точками сочленения.
\end{exerc}

\begin{exerc} 
Показать, что в графе, построенном на более чем двух вершинах и имеющем мост $\{x,y\}$, хотя бы одна из вершин $x$ и $y$ является точкой сочленения.
\end{exerc}

\begin{exerc}\label{exerc:ear_decomp}
Описать алгоритм, позволяющий построить разбиение любого односвязного графа на блоки.  
\end{exerc}

\begin{exerc}\label{exerc:ear_decomp}
Доказать утверждение \ref{propos:ear_decomp}.  
\end{exerc}

\begin{exerc}\label{exerc:closed_ear_decomp}
Доказать, что любой реберно-двусвязный граф $G$ можно представить в виде
$$
G=G_0\cup G_1\cup\ldots\cup G_k,
$$
где $G_0$ --- произвольный цикл в графе $G$, а $G_i$, $i>0$, представляет собой либо ручку, либо замкнутую ручку для подграфа $G_0\cup G_1\cup\ldots\cup G_{i-1}$ графа $G$.
\end{exerc}

\begin{exerc} 
Описать разложение на ручки для графа Петерсена (рис.\ref{fig:peterson}).
\end{exerc}

\begin{exerc} 
{\em Сильной ориентацией} неориентированного графа назовём такой выбор направления для каждого из его рёбер, что в результате этой операции получившийся ориентированный граф будет состоять из одной компоненты сильной связности. Доказать, что граф допускает сильную ориентацию тогда и только тогда, когда он рёберно-двусвязен.
\end{exerc}

\begin{exerc} 
С помощью теоремы Менгера докажите, что $k$-мерный гиперкуб $k$-связен.
\end{exerc}


\begin{exerc} 
Пусть $G$ вершинно-$k$-связен. Образуем из $G$ новый граф $G'$ путём добавления к $G$ новой вершины $y$ и не менее $k$ рёбер из $y$ в $k$ различных вершин графа $G$. Доказать, что $G'$ также $k$-связен.
\end{exerc}

\begin{exerc} 
Назовем $k$-веером из вершины $x$ в множество $Y$ набор из $k$ путей, начинающихся в $x$, заканчивающихся в $Y$, и не имеющих никаких общих вершин, кроме вершины $x$. Пусть $G$ есть $k$-связный граф, $x$ --- некоторая его вершина, а $Y$ --- набор из не менее чем $k$ вершин графа $G$, не включающий $x$. Доказать, что тогда существует $k$-веер из $x$ в $Y$.
\end{exerc}

\begin{exerc} 
Пусть $G$ $k$-связен и $k \geq 2$. Докажите, что в графе $G$ для любого подмножества $S \subseteq V(G)$ мощности $|S|=k$ найдется простой цикл, на котором лежат все вершины из множества $S.$
\end{exerc}


\begin{exerc} 
Докажите, что простой граф $G$ двусвязен тогда и только тогда, когда для любой тройки различных вершин $(x,y,z)$ в $G$ есть простой путь из $x$ в $z$, проходящий через $y$.
\end{exerc}


\begin{exerc} 
Кактусом называется граф, в котором каждый блок либо является циклом, либо изоморфен $K_2$. Доказать, что максимальное количество рёбер в кактусе на $n$ вершинах равно $\lfloor \frac{3}{2}(n-1) \rfloor$.
\end{exerc}


\begin{exerc} \label{exerc:c_x_y_in_Z}
Рассмотрим следующий алгоритм поиска максимального потока в сети, основанный на теореме \ref{theor:Ford_Fulkerson}:
\begin{enumerate}
\item Инициализация: текущий поток положим равным нулю на всех рёбрах.
\item Итерация: попытаемся найти путь из $s$ в $t$, все рёбра которого удовлетворяют свойствам $(1) - (2),$ описанным в доказательстве. Если путь не найден, то объявим текущий поток максимальным. Иначе увеличим поток вдоль всех рёбер найденного пути на наибольшую величину, для которой ещё не будут нарушены указанные свойства, после чего повторим итерацию.
\end{enumerate}

Докажите, что в случае целочисленных значений пропускных способностей рёбер сети алгоритм завершится.
\end{exerc}

\begin{exerc} 
Модифицировать описанный в предыдущем упражнении алгоритм для случая рациональных значений пропускных способностей рёбер сети.
\end{exerc}


\begin{exerc} 
После проведения некоторого количества матчей в спортивном турнире команда $X$ набрала известное нам количество побед. Пусть если $X$ выиграет все оставшиеся матчи, в которых она участвует, то она наберёт $W$ побед. Могут ли остальные матчи завершиться так, чтобы $X$ стала победителем в турнире? Для ответа на поставленный вопрос мы создадим следующего вида сеть:
\begin{enumerate}
\item Пусть $X_1,\dots , X_n$ — все команды кроме  команды $X$. Добавим во множество вершин сети вершины $x_1,\dots, x_n$, соответствующие этим командам.
\item Добавим также в сеть $\binom{n}{2}$ вершин с пометками $y_{i,j}$ — по вершине для каждой неупорядоченной пары различных команд $\{X_i, X_j\}$. В вершину $y_{i,j}$ направим ребра бесконечной пропускной способности из вершин $x_i$ и $x_j$.
\item Добавим в сеть исток $s$ и сток $t$. 
\item Из истока в каждую из вершин $x_i$ будет идти ребро пропускной способности $W-w_i$, где $w_i$ — количество выигранных командой $X_i$ матчей. Из каждой вершины $y_{i,j}$ в сток направим ребро пропускной способности $a_{i,j}$, равной количеству матчей, в которых команда $X_i$ встретится с командой $X_j$.
\end{enumerate}
Докажите, что максимальный поток в этой сети равен величине $\sum_{i,j} a_{i,j}$ тогда и только тогда, когда команды могут сыграть так, чтобы ни одна из них не выиграла больше $W$ матчей.

\end{exerc}


\begin{exerc} \label{edge-menger}
С помощью теоремы Форда-Фалкерсона докажите рёберную теорему Менгера.
\end{exerc}



\begin{exerc} \label{exerc-non-converge}

На рис. \ref{fig:exerc-non-converge} изображена сеть. Пропускные способности указаны рядом с рёбрами; $r=(\sqrt{5}-1)/2$; $r^2=1-r$. Будем искать максимальный поток в этой сети рассмотренным ранее алгоритмом. В качестве первого увеличивающего поток пути возьмём путь $(s,x_2,x_3,t).$ Затем будем увеличивать поток вдоль путей в следующем порядке: $p_1,p_2,p_1,p_3,p_1,p_2,p_1,p_3,\dots$, где $p_1=(s,x_1,x_2,x_3,x_4,t);\,p_2=(s,x_2,x_3,x_4,t);\, p_3=(s,x_1,x_2,x_3,t).$ Покажите, что последовательность величин потоков, которые находит алгоритм, не стремится к величине максимального потока в этой сети.

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/flow_non-converge.eps}
\caption{}
\label{fig:exerc-non-converge}
\end{figure}


\end{exerc}




\section*{Решение упражнений}

\begin{sol_exerc}
Заметим, что $\delta(K_n)=n-1$. Для любого другого графа $G$, построенного на $n$ вершинах, $\delta(G)<(n-1)$. Следовательно, $\kappa(G)<n-1$ для всех графов $G$, отличных от $K_n$.
\end{sol_exerc}

\begin{sol_exerc} 
Действительно, в силу неравенства $\delta(G)\geq k$ любая вершина должна иметь по меньшей мере $k$ инцидентных ей ребер. В силу теоремы (\ref{theor:first_th_gr}), 
$$
2|E(G)|=\sum_{x\in V(G)}\deg(x)\geq \delta(G)\, n\geq k\,n\qquad \Longrightarrow \qquad |E(G)|\geq k\,n/2\geq \lceil kn/2 \rceil.
$$
\end{sol_exerc}



\begin{sol_exerc} 
Так как $\delta(G)=k$, то достаточно доказать, что $\kappa(G)\geq k$. Рассмотрим произвольное подмножество $S\subset V(G)$ вершин размера $|S|<k$ и покажем, что граф $G-S$ остается связным. Для этого заметим, что удаление вершин из множества $S$ разбивает все вершины графа $G$, расставленные по кругу, на несколько блоков --- последовательностей вершин, между которыми нет ни одной вершины из множества $S$. Так как любые две соседние вершины в этом блоке соединены между собой ребром, то каждая такая группа вершин целиком содержится в какой-то связной компоненте. Крайние же вершины соседних двух блоков оказываются связанными ребром лишь в том случае, если между ними изначально было менее чем $k/2$ вершин из множества $S$. Но всего в множестве $S$ имеется $k$ вершин. Это означает, что не более чем одна пара крайних вершин двух соседних блоков может оказаться несоединенной ребром после удаления $S$. Но так как все блоки связаны циклически, то это не нарушает связность графа $G-S$. 
\end{sol_exerc}

\begin{sol_exerc} 
Расставим все вершины графа равномерно по окружности, после чего соединим каждую вершину с $\lfloor k/2 \rfloor$ вершинами слева от неё, с $\lfloor k/2 \rfloor$ вершинами справа и с противоположной вершиной (в силу чётности $n$ таковая существует). Как и в предыдущем упражнении, можно разбить вершины, оставшиеся после удаления какого-то множества $S$, $|S|<k$, на блоки. Из-за наличия рёбер, идущих в $\lfloor k/2 \rfloor$ соседей справа и слева от данной вершины, после удаления $S$ эти блоки остаются соединенными в цикл, разорванный не более чем в двух местах. Таким образом, в графе $G-S$ может остаться не более двух компонент связности. Однако существуют еще и ребра, идущие из каждой вершины в противоположную. Они не позволяют развалить граф $G$ после удаления $S$ в точности на две компоненты связности. Действительно, в противном случае нашлась хотя бы одна вершина одной компоненты, лежащая напротив какой-то вершины другой компоненты, а они по построению связаны ребром.  
\end{sol_exerc}



\begin{sol_exerc} 

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/connectivity_sol.eps}
\caption{}
\label{fig:connectivity_sol}
\end{figure}

Смотри рис.\ref{fig:connectivity_sol}.
\end{sol_exerc}

\begin{sol_exerc} 
Построим граф на $2(\delta + 1)$ вершине, состоящий из двух клик размерами $(\delta + 1)$. Соединим эти две клики с помощью $\lambda$ рёбер так, чтобы эти ребра были инцидентны $\lambda$ вершинам из первой клики и $\kappa$ вершинам из второй. Построенный граф удовлетворяет всем требуемым в задании свойствам. 
\end{sol_exerc}

\begin{sol_exerc} 
Для графа, изображенного на рис.\ref{fig:connectivity},a, $\kappa(G)=2$. Действительно, граф не имеет точек сочленения. Удаляя же две центральные вершины, мы получим две компоненты связности. Далее, очевидно, что  $\delta(G)=4$. Наконец, покажем, что $\lambda(G)=4$. Действительно, центральные вершины соединены пятью не пересекающимися по рёбрам путями, и их связанность нарушить нельзя, удалив менее чем пять ребер. Любая же из оставшихся вершин соединена четырьмя рёберно-непересекающимися путями с ближайшей к ней центральной вершиной.

Для графа на рис.\ref{fig:connectivity},b $\kappa(G)=4$: при удалении менее четырёх вершин либо на внутреннем, либо на внешнем цикле останется по меньшей мере пять связанных вершин. В любую вершину другого цикла можно попасть из одной из этих пяти, пройдя по одному ребру. Так как $\delta(G)=4$, то и $\lambda(G)$ также равно четырем.
\end{sol_exerc}

\begin{sol_exerc} 
Пусть $S$ есть минимальное вершинное разделяющее множество в $3$-регулярном графе $G$. Нам нужное доказать, что в нем обязательно найдется рёберное разделяющее множества размера $|S|$. Достаточно рассмотреть случай $|S| < 3$.  Пусть $H_1$ и $H_2$ есть какие-то две компоненты связности графа $G - S$. Каждая из вершин $x \in S$ обязательно соединена с какими-то вершинами из $H_1$ и c какими-то вершинами из $H_2$. Более того, так как $G$ является $3$-регулярным графом, то у каждой вершины $x \in S$ имеется ровно один сосед в какой-то из двух компонент $H_1$ и $H_2$. Для каждой вершины $x \in S$ удалим то ребро, которое шло в компоненту с ровно одним соседом вершины $x$. Это не дает нам рёберное разделяющее множество только в том случае, когда $|S|=2$, и вершины в $S$ соединены между собой. В этом исключительном случае мы можем удалить оба ребра между $S$ и одной из компонент связности $G - S$. 
\end{sol_exerc}

\begin{sol_exerc} 
Этот граф приведён на рис.\ref{fig:connectivity_minimal}. Докажем, что меньшим числом вершин не обойтись. Согласно предыдущему упражнению, в $3$-регулярном графе рёберная связность равна вершинной, поэтому искомый граф обязан иметь мост $\{x,y\}$. При удалении этого моста в каждой из компонент связности останется не менее трёх вершин, причём одна из них имеет степень $2$, а все остальные --- степень $3$. Из этого следует, что в каждой компоненте связности обязано остаться нечётное число вершин. С другой стороны, это число не меньше четырёх, так как присутствуют вершины степени $3$. Значит, пять --- это нижняя оценка на количество вершин в каждой компоненте связности графа $G -\{x,y\}$, и она достигнута для графа, показанного на рисунке.

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/connectivity_minimal.eps}
\caption{}
\label{fig:connectivity_minimal}
\end{figure}
\end{sol_exerc}

\begin{sol_exerc} 
Построим в графе остовное дерево. Любые два листа этого дерева не являются точками сочленения исходного графа.
\end{sol_exerc}

\begin{sol_exerc} 
Удалив мост $\{x,y\}$, мы разобъем $G$ в точности на две компоненты связности $G_x$ и $G_y$, $x\in V(G_x)$, $y \in V(G_y)$. По условию, хотя бы одна из них содержит больше одной вершины. Пусть такой компонентой является граф $G_y$. Удаление $y$ разбивает граф на две (непустых) компоненты связности $G_x$ и $G_y \backslash \{y\}$.
\end{sol_exerc}

\begin{sol_exerc} 
Для поиска блоков и точек сочленения можно использовать модификацию поиска в глубину. Во время обхода каждое ребро мы будем добавлять в отдельный стек, иногда извлекая из стека множества рёбер, составляющие блок. Нам понадобятся две дополнительные пометки $L_i$ и $N_i$ для каждой вершины $i$. При этом $N_i$ будет равна номеру вершины в порядке обхода в глубину: каждой вновь посещённой вершине мы будем сопоставлять наименьший из ещё не использованных номеров. Значение для $L_i$ мы будем выбирать равным $N_i$ в тот момент, когда начинаем обрабатывать вершину, но эту пометку мы будем иногда обновлять. 

В тот момент, когда поиск в глубину, обрабатывающий соседей вершины $y$, встречает уже посещённого соседа c меньшим номером, вершину $x$, и при этом $y$ не является родителем $x$ в дереве обхода в глубину (то есть имеется обратное ребро из $x$ в $y$), нужно обновить пометку $L_y$ по правилу $L_y := \min(L_y, N_x).$ 

Если поиск в глубину обнаруживает для вершины $y$ соседа $x$, которого мы еще не посетили, то после рекурсивного вызова алгоритма с аргументом $x$ нужно, во-первых, обновить пометку $L_y$ по правилу $L_y := \min(L_y, L_x),$ а во-вторых проверить, не являлась ли $y$ первой исследованной вершиной в блоке. Необходимым и достаточным условием этого является выполнение неравенства $L_x \geq N_e$. Если это так, то нужно вытолкнуть все рёбра вплоть до $\{x,y\}$ из стека и отметить, что все эти рёбра образуют один блок.  

В обоих случаях нужно перед всеми описанными действиями поместить ребро $\{x,y\}$ в стек.
\end{sol_exerc}


\begin{sol_exerc} 
Выберем в графе произвольный цикл $C$ и положим $G_0 =P_0=C.$ Для перехода от $G_{i}$ к $G_{i+1}$ выберем произвольное ребро $\{u,v\}$ графа $G-E(G_i)$ и произвольное ребро $\{x,y\} \in E(G_i)$. Согласно теореме \ref{theor:descr_2_conn_graphs}, эти два ребра обязательно принадлежат какому-то простому циклу. Значит, можно пройти по этому циклу от ребра $\{u,v\}$ в обе стороны до пересечения с $G_i$ и взять в качестве новой ручки $P_{i+1}$ последовательность пройденных таким образом вершин и рёбер. Данный процесс следует продолжать до тех пор, пока все ребра не войдут в описанное выше разложение графа $G$.
\end{sol_exerc}

\begin{sol_exerc} 
Для доказательства этого утверждения в качестве $G_0$ возьмём произвольный цикл $C$, после чего последовательно будем выбирать какую-то вершину $x$ из части графа $G$, уже покрытой ручками, которая инцидентна ребру $\{x,y\}$, не входящему в эту часть. Ребро $\{x,y\}$ принадлежит некоторому простому циклу. Начнем обход этого цикла с ребра $\{x,y\}$. При таком обходе мы в какой-то момент попадём  в вершину, уже покрытую ранее построенной частью разложения (в крайнем случае, это будет сама вершина $x$). Пройденный путь следует включить в разложение в качестве очередной ручки (или замкнутой ручки, если мы вернулись в $x$). Ясно, что этот процесс можно повторять, пока весь исходный граф не войдёт в разложение.
\end{sol_exerc}

\begin{sol_exerc} 
Этапы разложения изображены на рис.\ref{fig:peterson_ear}.
\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/peterson_ear.eps}
\caption{}
\label{fig:peterson_ear}
\end{figure}
\end{sol_exerc}

\begin{sol_exerc} 
Если в графе имеется мост, то этот граф, очевидно, не допускает сильную ориентацию. Рассмотрим двусвязный граф и покажем индукцией по количеству $n$ ручек и замкнутых ручек в разложении $G$, что сильная ориентация такого графа возможна. Если $n=0$, то граф представляет собой цикл, и все его рёбра мы можем ориентировать в одном направлении. Теперь рассмотрим граф, имеющий $n$ ручек в разложении, и удалим из него $n$-ю ручку, которая пересекалась с оставшимся графом по вершинам $x$ и $y$ (если ручка замкнута, то будем считать, что $x=y$). 

Граф без удалённой ручки допускает сильную ориентацию по индукционному предположению. Вернём в граф ручку и ориентируем все её рёбра в одном направлении, в сторону $x$. Теперь из любой вершины $G$ можно добраться до любой, проходя при необходимости вершины $x$ и $y$. 
\end{sol_exerc}


\begin{sol_exerc} 
Поместим $k$-мерный гиперкуб в такую систему координат, в которой его рёбра параллельны осям координат, а координаты каждой из вершин принадлежат множеству $\{0,1\}$. Пусть $a$ и $b$ — две вершины гиперкуба. Подходящей заменой системы координат (перенумерацией осей и заменой некоторых координат $x_i$ на $1-x_i$) можно добиться, что вершина $a$ будет иметь координаты $(0,0,\dots,0)$, а $b$ — $(0,0,\dots,0,1,1,\dots, 1)$. Теперь найдём $k$ <<путей>>, не пересекающихся по внутренним вершинам, между соответствующими битовыми строками. Под путём между битовыми строками $x_0$ и $x_n$ будем понимать последовательность битовых строк $x_0,x_1,\dots , x_n$, такую что $x_i$ и $x_{i+1}$ отличаются ровно одним битом. Такой последовательности очевидным образом отвечает путь в гиперкубе. Пусть в битовой строке для $b$ ровно $m$ единиц. Зафиксировав $i \in [k-m]$ и начав со строки из нулей, заменим $i$-й бит на единицу, после чего будем последовательно менять с нуля на единицу все биты, начиная с $(k-m)$-го. После $m$ таких замен вернём ноль на $i$-ю позицию. Так мы получим $k-m$ путей; построим ещё $m$. $i$-й из них получим так: зафиксируем $i \in [m]$. Начнём с нулевой строки. На $j$-м шаге построения пути заменим в текущей строке с нуля на единицу бит с индексом $(k-m) + (i+j) (\mod m)$. После $m$ замен путь будет построен.
\end{sol_exerc}



\begin{sol_exerc} 
Пусть в графе $G'$ нашлось разделяющее множество $S$ мощности $|S|<k$. Если $y\in S$, то и в $G$ имеется разделяющее множество $S \setminus \{y\}$ размера меньшего, чем $k$, а этого быть не может по условию. В случае же $y\notin S$ в компоненте связности графа $G' - S$, содержащей $y$, имеется еще по меньшей мере одна вершина. Но тогда и граф $G$ после удаления множества $S$ становится несвязным, чего быть не может.
\end{sol_exerc}

\begin{sol_exerc} 
Добавим в граф $G$ вершину $y$ и соединим её со всеми вершинами множества $Y$, образововав тем самым граф $G'$. Пользуясь результатом предыдущего упражнения, заключаем, что $G'$ $k$-связен. По теореме Менгера в $G'$ есть $k$ непересекающихся путей из $x$ в $y$. Удалив для каждого из этих путей замыкающую вершину $y$ вместе с инцидентным ей ребром, мы получим в графе $G$ $k$-веер из $x$ в $Y$.
\end{sol_exerc}

\begin{sol_exerc} 
Докажем по индукции. Для $k=2$ утверждения верно: в двусвязном графе любые две вершины лежат на простом цикле. Рассмотрим теперь произвольный $k$-связный граф $G$, $k>2$, и некоторое подмножество его вершин $S$. Выберем какую-нибудь вершину $x \in S$ и положим $S' = S\,\setminus \{x\}$. По предположению индукции, все вершины из множества $S'$ лежат на общем для них простом цикле $C.$ Пусть $x \notin C.$ Вершины множества $S'$ делят цикл $C$ на $k-1$ непересекающихся по рёбрам отрезков. Результат предыдущей задачи гарантирует нам, что в $G$ существует $k$-веер из $x$ в $V(C)$ в случае, если $V(C) \geq k$. В этом случае какие-то два пути из этого веера попадут на один отрезок цикла и позволят образовать цикл, включающий все вершины множества $S$. Если же $V(C)=k-1$, то $V(C)=S'$ и  можно провести такое же рассуждение для $(k-1)$-веера из $x$ в $V(C)$.
\end{sol_exerc}

\begin{sol_exerc} 
Если граф двусвязен, то тогда существует $2$-веер из $y$ в $\{x,z\}$. Объединение двух путей этого веера и образует требуемый путь. Если граф не двусвязен (но односвязен: случай несвязного графа тривиален), то пусть $x$ — точка сочленения, а $y,z$ — её соседи из разных блоков. Простого пути из $x$ в $z$ через $y$ нет.
\end{sol_exerc}



\begin{sol_exerc} 
Любой простой цикл длины $m > 3$ в кактусе можно заменить на цикл длины $3$ и $m-3$ блока, изоморфных $K_2$. От этого граф не перестанет быть кактусом, а количество вершин и рёбер в таком графе останется прежним. 

Рассмотрим теперь кактус, имеющий более одного блока, изоморфного $K_2$. Любые два таких блока можно стянуть в вершину, после чего добавить в граф крайний блок, изоморфный $K_3$. Полученный в результате данных операций граф останется кактусом, количество вершин в нем останется прежним, а количество ребер увеличится на единицу.

Таким образом, максимальное количество рёбер в кактусе достигается тогда, когда все блоки кроме, быть может, одного, изоморфны $K_3$. Такой кактус можно построить последовательным добавлением крайних блоков-треугольников, начав либо с $K_3$, либо с $K_2$, в зависимости от чётности $n$. При добавлении каждого блока добавляется две вершины и три ребра, откуда немедленно следует требуемое в задаче утверждение. 
\end{sol_exerc}

\begin{sol_exerc} 
Вначале докажем по индукции, что после $i$-й итерации алгоритма текущий поток $f_i$ будет целочисленным на каждом ребре. База индукции верна, так как поток инициализируется нулевыми значениями на каждом ребре. 

Теперь рассмотрим одну итерацию алгоритма, приводящую к увеличению потока. Во время этой итерации будет найдён какой-то путь из $s$ в $t$. Максимальным значением, на которое можно увеличить поток, не нарушив его свойства, является минимум из двух минимумов: $\min_i [c(x_i,x_{i+1})-f(x_i,x_{i+1})] $ и $\min_i f(x_{i+1},x_i).$ В первом из этих выражений индекс $i$ пробегает по значениям, соответствующим рёбрам, в которых мы увеличиваем <<попутный>> поток, а во втором — по рёбрам, в которых мы ослабляем <<встречный>>. Все эти величины целые по предположению индукции, а значит и изменение потока на любом ребре будет целочисленным.

Заметим, что каждая итерация увеличивает поток, вытекающий из истока, на величину, не меньшую единицы. Но тогда количество итераций ограничено сверху суммой ёмкостей по всем рёбрам, выходящим из истока, а значит алгоритм завершится.
\end{sol_exerc}


\begin{sol_exerc} 
Модификация не требуется. Пусть $D$ — общий знаменатель для всех пропускных способностей рёбер. Доказательство того, что после $i$-й итерации алгоритма текущий поток $f_i$ на каждом ребре может быть выражен обыкновенной дробью со знаменателем $D$, полностью повторяет решение предыдущего упражнения. Таким образом, каждая итерация увеличит поток через сеть на величину, не меньшую $1/D.$ Следовательно, алгоритм завершится.
\end{sol_exerc}


\begin{sol_exerc} 
Максимальный поток в построенной сети может быть получен с помощью описанного ранее алгоритма, а значит, он будет целочисленным на каждом ребре. В таком случае этот поток можно рассматривать как сумму потоков величины 1, каждый из которых проходит через ровно одну из вершин $x_i$ и через ровно одну из вершин $y_{i,j}$. Каждый такой единичный поток отвечает одной игре, в которой команда $x_i$ выиграла у команды $x_j$. 

Поток величины $\sum a_{i,j}$ будет найден тогда и только тогда, когда каждый разрез имеет пропускную способность не меньше $\sum  a_{i,j}$. Пусть $[S,T]$ — разрез конечной пропускной способности, а $Z=\{i : x_i \in T\}.$ В этом случае не может быть такого, что $x_i \in S,$ а $y_{i,j} \in T:$ ребро между этими вершинами имеет бесконечную пропускную способность. Пусть $y_{i,j} \in T$ когда $\{i,j\} \subseteq Z$ — это может лишь уменьшить пропускную способность разреза. 

Мы можем заключить, что пропускная способность разреза $[S,T]$ описывается выражением $\sum_{i \in Z} (W-w_i) + \sum_{\{i,j\} \not \subseteq Z} a_{i,j}.$ Это значит, что условие о том, что каждый разрез имеет пропускную способность по меньшей мере $\sum a_{i,j}$, может быть переписано в виде: 
$$
\sum_{i \in Z} (W-w_i) \geq \sum_{\{i,j\} \subseteq Z} a_{i,j}, \qquad \forall Z \subseteq [n].
$$
Это, в свою очередь, и означает, что в любом множестве команд мы можем распределить победы в играх пар из этого множества так, чтобы выигрышей $i$-й команды было не больше, чем $W-w_i$.  
\end{sol_exerc}





\begin{sol_exerc} 
Рассмотрим произвольный граф $G$ и две различные вершины $x,y$ в нём. Построим из этого графа сеть, взяв в качестве истока вершину $x$, в качестве стока — вершину $y$, а каждое неориентированное ребро в $G$ заменив на пару ориентированных рёбер, направленных противоположно, и имеющих пропускную способность 1. Найдём в этой сети максимальный поток с помощью рассмотренного алгоритма. Поток будет равен нулю или единице на каждом ребре. Величина максимального потока, очевидно, равна максимальному количеству рёберно-непересекающихся путей из $x$ в $y$. В то же время, по теореме Форда-Фалкерсона, она равна пропускной способности минимального рёберного разреза. Пропускная способность любого разреза, в свою очередь, совпадает с количеством рёбер в соответствующем разрезе исходного графа $G$ по построению. 
\end{sol_exerc}



\begin{sol_exerc} 
Остаточные пропускные способности способности рёбер $(x_4,x_3),\,(x_2,x_3),\,(x_2,x_1)$ после первого шага равны, соответственно, $r^1, 0, r^0$. Предположим, что остаточные пропускные способности указанных рёбер после $(1+4i)$-го шага равны, соотвественно, $r^{2i+1}, 0$ и $ r^{2i}$. Проэмулируем работу четырёх шагов алгоритма. Мы получим, что соответствующие величины станут равны $r^{2i+3}, 0$ и $r^{2i+2}$, а поток увеличится на $2(r^{2i+1}+r^{2i+2}).$ Отсюда следует, что величина найденного алгоритмом потока будет, возрастая, стремиться к значению 
$$
1 + 2 \sum_{i=1}^\infty r^i= 1+ \frac{2r}{1-r} = 2 + \sqrt 5.
$$
В то же время легко убедиться, что в сети существует поток величины 5 (вдоль путей $(s,x_4,t);$ $(s,x_1,t);$ $(s,x_2,x_3,t)$), что больше чем $2 + \sqrt 5$.
\end{sol_exerc}





\section{Паросочетания в графах}

\myitem Паросочетанием $M$ в произвольном графе называется любой набор ребер, не имеющих общих концевых вершин. Понятие паросочетания является одним из наиболее важных понятий в теории графов и встречается в огромном числе приложений \cite{Lovas}. 

\mysubitem Любое одиночное ребро $e$ в графе $G\neq \bar{K}_n$ является простейшим примером паросочетания. Однако этот пример не слишком интересен --- как правило, нам хочется покрыть паросочетанием как можно большее количество вершин в графе $G$. 

\begin{defin} 
Говорят, что вершина $x\in V(G)$ покрыта паросочетанием $M$, если она является концом одного из ребер $e\in M$. 
\end{defin}

\begin{defin}
Паросочетание $M$ называется \emph{совершенным,} если оно покрывает все вершины графа $G$. 
\end{defin}

\begin{examp}
Рассмотрим полный двудольный граф $K_{n,n}$, состоящий из блоков $X$ и $Y$ одинакового размера $n$. Ясно, что любая биекция $f\colon X\to Y$ задает нам некоторое совершенное паросточетание в таком графе. Так как существует $n!$ взаимно-однозначных отображений из $X$ в $Y$, то существует и $n!$ различных совершенных паросочетаний в графе $K_{n,n}$.
\end{examp}

\mysubitem Далеко не все графы имеют совершенное паросочетание. Так, очевидно, что любое паросочетание $M$ покрывает четное количество вершин в графе $G$. Поэтому любой граф, построенный на нечетном количестве вершин, совершенного паросочетания не имеет. Для графов, у которых совершенного паросочетания не существует, полезно ввести понятие максимального паросочетания.

\begin{defin}
Максимальным паросочетанием в графе $G$ называется паросочетание, покрывающее наибольшее количество вершин в графе $G$. Количество ребер в таком паросочетании обозначается обычно через $\alpha'(G)$. 
\end{defin}


\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}
		\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/maximal-match.eps}
 	\caption{наибольшее по включению}
	\end{subfigure}

	\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/maximum-match.eps}
 	\caption{совершенное}
	\end{subfigure}
\end{tabular}
\caption{Паросочетания}
\label{fig:match}
\end{figure}


Казалось бы, для построения максимального паросочетания в графе можно использовать жадный алгоритм, добавляя к $M$ ребра графа до тех пор, пока это возможно. Полученное паросочетание, однако, максимальным может и не оказаться. В качестве примера на рис.\ref{fig:match},a показано паросочетание $M$, полученное в результате работы жадного алгоритма. Оно является наибольшим в том смысле, что добавление к нему любого другого ребра из множества $E(G)$ уже невозможно. Однако количество ребер в $M$ строго меньше $\alpha'(G)=5$. Максимальное (и одновременно совершенное) паросочетание для такого графа показано на рис..\ref{fig:match},b. 


\mysubitem Рассмотрим произвольное паросочетание $M$ в графе $G$. Первое, что нам хотелось бы --- это понять, является ли данное паросочетание в графе максимальным. Прежде чем сформулировать критерий максимальности паросочетания $M$, введем еще несколько важных понятий.

\begin{figure}[h]
\centering
\begin{tabular}[t]{cc}
		\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/augpath0.eps}
 	\caption{$M$-чередующийся путь}
	\end{subfigure}

	\begin{subfigure}[b]{0.4 \textwidth}
	\centering
    		\includegraphics[scale=0.7]{pics/augpath.eps}
 	\caption{$M$-дополняющий путь}
	\end{subfigure}
\end{tabular}
\caption{}
\label{fig:augpath}
\end{figure}


\begin{defin}
Пусть $M$ есть некоторое паросочетание в графе $G$. Произвольный путь в графе $G$, в котором котором чередуются ребра, входящие в $M$, и ребра, в $M$ не входящие, называется $M$-чередующимся (рис.\ref{fig:augpath},a). $M$-чередующийся путь, оба конца которых не покрыты паросочетанием $M$, называется $M$-дополняющим путем (рис.\ref{fig:augpath},b).
\end{defin}

Предположим, что в графе $G$ для заданного паросочетания $M$ существует $M$-дополняющий путь. Рассмотрим тогда ребра этого пути, не входящие в паросочетание $M$. Ясно, что эти ребра образуют некоторое новое паросочетание $M'$, причем количество ребер в этом паросочетании на единицу больше, чем количество ребер в $M$. Следовательно, отсутствие в графе $G$ для заданного паросочетания $M$ $M$-дополняющего пути является необходимым условием максимальности такого паросочетания. Оказывается, что это условие является одновременно и достаточным условием максимальности паросочетания $M$. Именно, справедлива

\begin{theor}[Berge, 1957] 
Паросочетание $M$ в графе $G$ является максимальным тогда и только тогда, когда в таком графе $M$-дополняющие пути отсутствуют. 
\end{theor}

\evidp Нам осталось доказать достаточность этого условия. Предположим, что $M$ не является максимальным паросочетанием в графе $G$. Покажем, что тогда в графе $G$ обязательно найдется $M$-дополняющий путь. 

Обозначим через $M'$ максимальное паросочетание в $G$, так что $|M'|>|M|$. Выкинем из графа $G$ все ребра, не принадлежащие ни $M$, ни $M'$, а также ребра, принадлежащие как $M$, так и $M'$. Так как любая вершина в полученном графе $H$ может быть инцидентна максимум одному ребру из $M$ и максимум одному ребру из $M'$, то степень любой такой вершины не превосходит двух. Следовательно, любая компонента связности графа $H$ представляет собой путь (или цикл), в котором чередуются ребра из $M$ и из $M'$. 

Так как $|M'|>|M|$, то в графе $H$ обязан существовать путь, начальное и конечное ребра которого принадлежат $M'$. Начальная и конечная вершины такого пути покрыты $M'$, а значит, не покрыты $M$. Поэтому данный путь представляет собой $M$-дополняющий путь в $G$. \qed



\myitem Достаточно важной задачей, часто встречающейся в приложениях, является задача поиска максимального паросочетания в двудольном графе. 

\mysubitem Приведем характерный пример такого рода задач.

\begin{examp} 
Пусть в группе имеется $m$ студентов, которых необходимо распределить по $n$ компаниям на летнюю практику. В этом случае мы можем ввести двудольный граф $G$, блоки $X$ и $Y$ которого содержат $m$ и $n$ вершин соответственно. Любые две вершины $x\in X$ и $y\in Y$ этого графа соединяются ребром в случае, если квалификация студента удовлетворяет данную компанию, а сама компания, в свою очередь, устраивает данного студента. При этом мы будем полагать, что в каждую компанию мы можем устроить только лишь одного студента. Последнее условие означает, что нам надо найти в построенном двудольном графе паросочетание. Кроме того, нам нужно \emph{каждого} студента устроить на практику. Это означает, что в графе $G$ нам нужно найти так называемое \emph{$X$-насыщенное} паросочетание.
\end{examp}

\begin{defin} Паросочетание $M$ в двудольном графе $G$, разбитом на блоки $X$ и $Y$, называется $X$-насыщенным, если любая вершина из блока $X$ покрыта этим паросочетанием. 
\end{defin}

\mysubitem Оказывается, существует очень удобный критерий существования $X$-насыщенного паросочетания в двудольном графе $G$. Именно, рассмотрим произвольный двудольный граф $G$ с блоками $X$ и $Y$. Для любого подмножества $U$ множества $X$ вершин первого блока через $N(U)$ обозначим подмножество вершин, смежных со всеми вершинами из $U$. Очевидно, что в двудольном графе все вершины множества $N(U)$ принадлежат блоку $Y$.

\begin{theor}[Ph.Hall, 1935] \label{theor:Hall}
$X$-насыщенное паросочетание в графе $G$ существует тогда и только тогда, когда для любого $U\subseteq X$ его мощность $|U|$ меньше или равна мощности $|N(U)|$ соответствующего множества $N(U)\subseteq Y$ вершин, смежных с $U$. 
\end{theor}  

\begin{rem} Неформально говоря, теорема Холла утверждает, что каждое подмножество $U\subseteq X$ должно иметь в $Y$ достаточное количество смежных вершин. В частности, совершенно очевидно, что для существования $X$-насыщенного паросочетания необходимо выполнение условия $|X|\leq |Y|$. Далее, понятно, что если в $X$ имеются две вершины $x_1$ и $x_2$ степени $1$, и если обе эти вершины имеют одну и ту же смежную с ними вершину $y\in Y$, то $X$-насыщенного паросочетания в таком графе не существует. Теорема \ref{theor:Hall}, по сути, обобщает два этих частных случая на общий случай произвольных подмножеств $U\subseteq X$. 
\end{rem}

\begin{rem} Сразу заметим, что необходимость условия 
\begin{equation}
\label{eq:Hall_cond}
|U|\leq |N(U)|\qquad \qquad \forall\,\,U\subseteq X
\end{equation}
совершенно очевидна. Действительно, пусть существует хотя бы одно подмножество $U$, для которого условие (\ref{eq:Hall_cond}) не выполняется. Рассмотрим двудольный подграф $G'$, состоящий из блоков $U$ и $N(U)$. В таком графе $U$-насыщенного паросочетания не существует. Но это автоматически означает, что не существует и $X$-насыщенного паросочетания и в исходном графе $G$: все ребра, исходящие из $U$, приходят только в $N(U)$. Поэтому правильно выбрать ребра, выходящие из подмножества $U$, нам уже не удастся вне зависимости от того, насколько успешно мы справились с решением этой задачи для ребер, исходящих из подмножества $X\setminus U$. 
\end{rem}

\begin{rem} Теорему Холла часто называют также теоремой о деревенских свадьбах. Это название связано со следующей формулировкой этой задачи, восходящей к известному немецкому математику первой половины двадцатого века Герману Вейлю.  В деревне относительно каждой пары юноша-девушка известно, дружат они или нет. Тогда если для любых $k$ юношей объединение подмножеств их подруг содержит по крайней мере $k$ девушек, то каждый юноша сможет выбрать себе будущую жену из числа своих же подруг.
\end{rem}

\mysubitem Доказательство теоремы Холла легко следует из вершинной теоремы Менгера. Действительно, добавим к графу $G$ две вершины $x$ и $y$, а затем соединим вершину $x$ со всеми вершинами блока $X$, а вершину $y$ --- со всеми вершинами блока $Y$. Пусть $k:=|X|\leq |Y|$. Заметим, что $X$ является наименьшим разделяющим $x$ и $y$ множеством. Тогда, по теореме Менгера, у нас существует $k$ непересекающихся во внутренних точках простых путей, соединяющих $x$ и $y$. Участки этих путей, соединяющие вершины блоков $X$ и $Y$, и представляют собой искомое $X$-насыщенное паросочетание в исходном графе $G$. 

Приведем все же для полноты изложения и прямое доказательство теоремы Холла. Это доказательство интересно, в частности, тем,  что оно дает конструктивный алгоритм построения $X$-насыщенного паросочетания в двудольном графе. 

Итак, нам осталось доказать достаточность условий (\ref{eq:Hall_cond}) для существования $X$-насыщенного паросочетания в двудольном графе $G$. Пусть $M$ есть некоторое произвольное паросочетание с числом ребер $|M|$, и пусть количество $|X|$ вершин в блоке $X$ равно $m$. Если $|M|=m$, то доказывать нечего --- $M$ является $X$-насыщенным  паросочетанием. Поэтому предположим, что $|M|<m$. Наша задача --- показать, что в этом случае мы всегда можем построить паросочетание $M'$ с количеством $|M'|$ ребер, равных $|M|+1$. 

Так как $|M|<m$, то в блоке $X$ обязательно существует вершина $x_1$, не покрытая паросочетанием $M$. Согласно условию (\ref{eq:Hall_cond}), $|N(x_1)|\geq 1$, то есть в множестве $N(x_1)$ всех вершин из $Y$, смежных с вершиной $x_1$ имеется хотя бы одна вершина $y_1\in Y$. Если она не покрыта паросочетанием $M$, то, добавляя к $M$ ребро $\{x_1,y_1\}$, мы получим паросочетание $M'=M\cup \{x_1,y_1\}$ с числом ребер $|M|+1$. Если же она покрыта паросочетанием $M$, то существует ребро $\{y_1,x_2\}\in M$, второй конец которого --- вершина $x_2$ --- принадлежит блоку $X$. По условию (\ref{eq:Hall_cond}), мощность множества $N(x_1,x_2)$ вершин, смежных как с $x_1$, так и с $x_2$, больше или равна двум. Поэтому в этом множестве наряду с $y_1\in N(x_1,x_2)$ существует и еще хотя бы одна вершина --- вершина $y_2$. Если она не покрыта паросочетанием $M$, то, заменяя в $M$ ребро $\{y_1,x_2\}$ парой ребер $\{x_1,y_1\}$ и $\{x_2,y_2\}$, мы получим новое паросочетание $M'$ с количеством ребер, равных $|M|+1$. Если же и вершина $y_2$ покрыта паросочетанием $M$, то рассмотрим тогда ребро $\{y_2,x_3\}\in M$ и повторим наши рассуждения для множества вершин $\{x_1,x_2,x_3\}$. Продолжая процесс далее, мы максимум за $m$ таких шагов построим паросочетание $M'$ с числом ребер, равных $|M|+1$ (рис.\ref{fig:bipartite-match}). \qed

\begin{figure}[h]
\centering
\includegraphics[scale=0.7]{pics/bipartite-match.eps}
\caption{Построение $X$-насыщенного паросочетания в двудольном графе}
\label{fig:bipartite-match}
\end{figure}



\begin{conseq}
Пусть в двудольном графе $|X|=|Y|$, и для любого подмножества $U$ множества $X$ выполняются условия (\ref{eq:Hall_cond}). Тогда в этом графе существует совершенное паросочетание.
\end{conseq}

\mysubitem Понятие максимального паросочетания в графе достаточно тесно связано с еще одним очень важным понятием --- вершинным покрытием графа $G$. 

\begin{defin}
Вершинным покрытием графа $G$ называется такое подмножество вершин, которое покрывает все ребра графа $G$. Это покрытие называется минимальным, если ни одно другое вершинное покрытие $G$ не содержит меньшего количества вершин. Количество вершин в минимальном вершинном покрытии часто обозначается через $\beta(G)$. 
\end{defin}

\begin{theor}[Кёниг, 1931; Эгервари, 1931]\label{theor:Konig}
В любом двудольном графе $G$ количество ребер в максимальном паросочетании равно количеству вершин в минимальном вершинном покрытии $G$.
\end{theor}

\evids легче всего провести, используя вершинную теорему Менгера. Именно, добавим к вершинам графа $G$ две дополнительные вершины $x$ и $y$, и соединим с $x$ все вершины блока $X$, а с $y$ --- все вершины блока $Y$. Заметим, что в полученном графе $G'$ любое подмножество множества $V(G')$ вершин разделяет вершины $x$ и $y$ тогда и только тогда, когда это же подмножество покрывает все ребра исходного графа $G$. Кроме того, любое множество путей в графе $G'$, соединяющих вершины $x$ и $y$ и не имеющих общих внутренних вершин, образует некоторое паросочетание в графе $G$. Верно и обратное: любое паросочетание $M$ в $G$ может быть продолжено до путей, соединяющих в графе $G'$ вершины $x$ и $y$, и не имеющих общих внутренних вершин. Теперь для доказательства равенства $\alpha'(G)=\beta(G)$ достаточно сослаться на вершинную теорему Менгера. \qed

\begin{rem}
Теорема Кенига-Эгервари, наряду с теоремами Менгера и Форда-Фалкерсона, относится к важному классу минимаксных теорем теории графов. Каждая из этих теорем была доказана в свое время независимо от других утверждений этого класса. Впоследствии выяснилось, что достаточно доказать лишь одну из них, например, теорему Менгера. При этом все остальные утверждения данного класса могут быть достаточно легко выведены из этой теоремы. Поэтому все такие утверждения часто называются теоремами менгеровского типа.
\end{rem}

\mysubitem Теорему Кенига-Эгервари можно переформулировать в матричном виде. Именно, рассмотрим прямоугольную матрицу $A$, состоящую из нулей и единиц. Пусть $l$ есть максимальное количество единиц, которые можно выбрать так, чтобы никакие две из них не принадлежали одной и той же строке или одному и тому же столбцу матрицы $A$. Пусть число $k$ равно минимальному количеству строк и (или) столбцов, содержащих все единицы матрицы $A$. Тогда справедливо равенство $l=k$. 

К примеру, в матрице
$$
A=\begin{pmatrix}
1&1&\boxed{1}&0&0&0\\
0&0&1&\boxed{1}&1&1
\end{pmatrix}
$$
существуют $l=2$ единицы, обведенные в квадратную рамочку, которые не принадлежат одной и той же строке или одному и тому же столбцу матрицы $A$. Далее, существует $k=2$ строки, которые содержат все единицы матрицы $A$. 

Чтобы убедиться, что данное утверждение есть простая переформулировка теоремы Кёнига на матричном языке, достаточно ввести в рассмотрение двудольный граф $G$, блоки $X$ и $Y$ которого отвечают множеству строк и множеству столбцов матрицы $A$, и соединить вершины этого двудольного графа в том случае, когда на пересечении соответствующих строки и столбца в матрице $A$ стоит единица. В этом случае $l$ окажется равным количеству ребер в максимальном паросочетании графа $G$, а $k$ --- количеству вершин в минимальном вершинном покрытии $G$. 



\myitem Существует довольно много практических задач, в которых необходимо найти паросочетание $M$ в графе $G$ общего вида, не обязательно двудольном \cite{Lovas}. Например, мы можем захотеть для выполнения какого-то задания разбить всех студентов в группе на пары так, чтобы студенты внутри каждой пары имели опыт работы друг с другом. В этом примере все множество студентов можно рассматривать как множество $V(G)$ вершин графа $G$. Ребро между двумя вершинами проводится в том случае, если соответствующие этим вершинам студенты имели до этого момента опыт совместной работы. Понятно, что если граф $G$ не оказался пустым графом, то хотя бы одну такую пару студентов мы как-то сможем найти. Однако нам хотелось бы разбить на пары как можно большее количество студентов, в идеале --- всех. В первой части данного параграфа мы постараемся понять, каким должен быть граф для того, чтобы мы все множество вершин могли разбить на пары.   

\mysubitem Начнем с определения совершенного паросочетания. 

\begin{defin}
Паросочетание $M$ в графе $G$ называется \emph{совершенным,} если каждая вершина графа $G$ оказывается покрытой ребром из $M$. 
\end{defin}

Достаточно очевидно, что для существования в графе $G$ совершенного паросочетания количество вершин $|V(G)|$ должно быть четным. Однако, как и в случае двудольного графа, одного условия только на само множество вершин явно недостаточно. Действительно, рассмотрим некоторое подмножество $S$ множества $V(G)$ вершин графа $G$ и удалим все вершины этого подмножества вместе с инцидентными им ребрами. В полученном в результате такой операции графе $G-S$ могут оказаться компоненты связности, количество вершин в которых нечетно (так называемые \emph{нечетные} компоненты связности). Если в исходном графе $G$ существует совершенное паросочетание, то тогда обязательно должно существовать и хотя бы одно ребро из каждой такой компоненты связности в $S$. Следовательно, количество вершин в $S$ должно быть не меньше, чем нечетных компонент связности в графе $G-S$:
\begin{equation}
\label{Tutte_cond}
c_o(G-S)\leq |S|\qquad \qquad \forall\,S\subset V(G).
\end{equation} 
Здесь $c_o(G-S)$ --- количество нечетных компонент связности графа $G-S$. Заметим сразу, что условие (\ref{Tutte_cond}) означает, в том числе, что граф $G$ имеет четное число вершин: выбирая в качестве $S$ пустое множество $\emptyset$, мы получаем, что $c_o(G)\leq |\emptyset|=0$, то есть в графе $G$ отсутствуют компоненты связности, имеющие нечетное число вершин.

\mysubitem Оказывается, что условие (\ref{Tutte_cond}) является не только необходимым, но и достаточным для существования в графе $G$ совершенного паросочетания.  

\begin{theor}[Татт, 1947]
В графе $G$ существует совершенное паросочетание тогда и только тогда, когда для любого $S\subset V(G)$ количество $c_o(G-S)$ нечетных компонент связности графа $G-S$ не превосходит мощности $|S|$ множества $S$. 
\end{theor}

\evidp Необходимость условий (\ref{Tutte_cond}) мы уже доказали, так что нам осталось доказать достаточность условий (\ref{Tutte_cond}) для существования совершенного паросочетания в графе $G$. План доказательства будет следующим. 

Вначале мы предположим, что граф $G$ удовлетворяет условиям теоремы Татта, однако совершенного паросочетания не имеет. Заметим теперь, что если к графу $G$ можно прибавить ребро $e$ так, чтобы в графе $G+e$ по-прежнему не было совершенных паросочетаний, то для графа $G+e$ также будут выполняться условия (\ref{Tutte_cond}). Действительно, добавление к $G$ ребра $e$ разве что уменьшит количество нечетных компонент связности --- это произойдет тогда, когда $e$ соединит две нечетные компоненты связности в графе $G-S$. Во всех остальных случаях это количество останется неизменным. 

Данное обстоятельство позволит нам от графа $G$ перейти к графу $G+e$, затем попытаться к графу $G+e$ добавить ребро так, чтобы и в новом графе не появилось совершенное паросочетание, и так далее. Данный процесс, однако, неминуемо когда-то закончится. Действительно, если мы вообще все вершины со всеми соединим, то получим полный граф, построенный на четном числе вершин, у которого гарантированно имеется совершенное паросочетание. Поэтому на каком-то шаге мы остановимся и получим так называемый \emph{насыщенный} граф $G^*$ --- граф, в котором отсутствуют совершенные паросочетания, но они появляются при добавлении к $G^*$ любого ребра. 

В насыщенном графе $G^*$ мы выделим подмножество вершин $U$, каждая из которых соединена со всеми вершинами графа $G^*$, и докажем (смотри лемму \ref{lemma_Tutt}), что граф $G^*-U$ представляет собой объединение нескольких несвязных друг с другом полных графов. Так как в силу условий (\ref{Tutte_cond}) в графе $G^*-U$ не более $|U|$ нечетных компонент связности, то мы всегда сможем совершить следующие операции: 
\begin{enumerate}
\item построить в каждой компоненте связности графа $G^*-U$, содержащей четное число вершин, совершенное паросочетание;
\item построить в каждой нечетной компоненте связности этого графа совершенное паросочетание, покрывающее все вершины, кроме одной;
\item соединить каждую оставшуюся вершину в каждой из компонент нечетной связности с какой-то своей вершиной из множества $U$; 
\item разбить на пары оставшееся множество $U_o$ вершин в $U$.
\end{enumerate}
Последнюю операцию мы можем совершить потому, что, во-первых, все вершины в $U_o$ смежны друг с другом по построению множества $U$, а во-вторых, количество таких вершин четно. Действительно, удаляя из четного числа вершин в графе $G^*$ вершины, входящие в компоненты с четным числом вершин, мы вновь получаем четное число. Далее, вычитая из остатка нечетное число вершин любой компоненты нечетной связности вместе с одной из вершин множества $U$, мы вновь получаем четное число.

Таким образом, мы построили в графе $G^*$ совершенное паросочетание, что противоречит исходному предположению.  \qed 

\mysubitem Итак, для доказательства теоремы Татта нам осталось доказать следующее утверждение.

\begin{lemm}\label{lemma_Tutt}
Пусть $U$ есть подмножество вершин $U$ насыщенного графа $G^*$, каждая из которых соединена со всеми вершинами графа $G^*$. Тогда в графе $G^*-U$ любая компонента связности является полным графом.
\end{lemm}

\evidp Для доказательства леммы достаточно показать, что если $\{a,b\}$ и $\{b,c\}$ есть смежные ребра в графе $G^*-U$, то тогда и вершины $a,c$ также соединены в этом графе ребром $e_1=\{a,c\}$. 

Предположим, что это не так, то есть $e_1\notin E(G^*-U)$. Как следствие, ребро $e_1$ отсутствует и в графе $G^*$. В силу того, что вершина $b\notin U$, в графе $G^*$ найдется вершина $d\in V(G^*)$, несмежная с $b$. Так как граф $G^*$ является насыщенным, то и в графе $G^*+e_1$, и в графе $G^*+e_2$, где $e_2=\{b,d\}$, имеются совершенные паросочетания $F_1$ и $F_2$ соответственно. При этом, так как в исходном графе $G^*$ таких паросочетаний нет, то $e_1\in F_1$ и $e_2\in F_2$. 

Рассмотрим теперь объединение $F_1\cup F_2$ совершенных паросочетаний. Это объединение может состоять из ребер, принадлежащих одновременно как $F_1$, так и $F_2$, а также из циклов, в которых ребра из $F_1$ и $F_2$ чередуются друг с другом (а следовательно, длина таких циклов обязательно четная). Так как ребра $e_1$ и $e_2$ не совпадают друг с другом, то каждое из этих ребер принадлежит каким-то циклам $C_1$ и $C_2$. При этом возможны два случая.

Предположим вначале, что $C_1\neq C_2$, то есть предположим, что ребра $e_1$ и $e_2$ принадлежат двум различным циклам. Тогда в цикле $C_1$ заменим ребра паросочетания $F_1$ ребрами паросочетания $F_2$, а в цикле $C_2$, наоборот, заменим ребра паросочетания $F_2$ ребрами паросочетания $F_1$. В результате получим совершенное паросочетание, в которое не будут входить ни ребро $e_1$, ни ребро $e_2$. Иными словами, мы получим совершенное паросочетание в графе $G^*$, чего быть не может по нашему предположению.

Теперь предположим, что ребра $e_1,e_2$ принадлежат одному и тому же циклу $C_1=C_2=:C$. Будем двигаться по этому циклу от вершины $b$ в направлении, задаваемым ребром $(b,d)$, до тех пор, пока не встретим одну из вершин ребра $e_1$. Пусть для определенности это будет вершина $a$ (смотри рисунок). Пройденную $(b,a)$-цепь обозначим через $P$, а непройденную пока цепь $(a,b)$ обозначим через $Q$. Тогда цепочка ребер $P+\{a,b\}$ представляет собой некоторый цикл четной длины, в котором чередуются ребра паросочетания $F_2$. Выбрав в этом цикле ребра, не входящие в паросочетание $F_2$, мы получим цикл, в который входит ребро $\{a,b\}$, но не входит ребро $e_2=\{b,d\}$. Далее, цепочка ребер $Q+\{b,a\}$ также есть цикл четной длины, в которой чередуются ребра паросочетания $F_1$. В ней также заменим ребра, входящие в $F_1$, на ребра, в $F_1$ не входящие. В результате получим еще один цикл четной длины, в который уже не будет входить ребро $e_1=\{a,c\}$. В итоге мы опять получили совершенное паросочетание, в которое не входит ни ребро $e_1$, ни ребро $e_2$, то есть совершенное паросочетание графа $G^*$. Снова пришли к противоречию.

Итак, предположив, что в любом графе, удовлетворяющем условиям (\ref{Tutte_cond}), совершенное паросочетание отсутствует, мы пришли к противоречию. Это противоречие и доказывает, что в таком графе обязательно найдется совершенное паросочетание.  
\qed

\myitem Теорема Татта играет очень важную роль в теории паросочетаний. Так, например, с ее помощью достаточно просто доказываются разного рода достаточные условия существования совершенных паросочетаний. Схема доказательства такого рода доказательств обычно такова: рассматривается описанная в теореме декомпозиция и предполагается, что граф не имеет совершенного паросочетания. Затем с помощью разного рода подсчетов или оценок получается то или иное противоречие.

\mysubitem В качестве примера такого рода рассуждений можно привести один из первых результатов теории графов, доказанный Петерсеном еще в 1891 году.

\begin{theor}[Петерсен, 1891]
Каждый связный кубический граф $G$, имеющий не более двух мостов, обладает совершенным паросочетанием.
\end{theor} 

\evidp Пусть граф $G$ не имеет совершенного паросочетания. Тогда, согласно теореме Татта, существует такое подмножество $S$ вершин, что в графе $G-S$ имеется ровно $c_o(G-S)$ нечетных компонент, причем
$$
c_o(G-S)>|S|,\qquad \text{а точнее,}\qquad c_o(G-S)\geq |S|+2.
$$
Действительно, так как в кубическом графе количество вершин четно, то в случае, когда $|S|$ нечетно, нечетным должно быть и количество нечетных компонент, и наоборот, когда $|S|$ четно, то и $c_o(G-S)$ также четно. Иными словами, $c_o(G-S)\equiv |S|\,\mod(2)$, откуда и вытекает справедливость последнего неравенства. 

Теперь рассмотрим произвольную нечетную компоненту $G_i$ графа $G-S$. Пусть $m_i$ есть количество ребер, соединяющих эту компоненту с подмножеством $S$. По теореме \ref{theor:first_th_gr},
$$
m_i+2\,|E(G_i)|=\sum\limits_{x\in V(G_i)}\deg(x)=3\,|V(G_i)|.
$$
Правая часть этого выражения является нечетным числом. Следовательно, и число $m_i$ также должно быть нечетным. Так как не более два ребра в $G$ являются мостами, то не более чем два числа из всех $m_i$ равны единице, а остальные, таким образом, больше или равны трем. 

Итак, из нечетных компонент графа $G-S$ в $S$ идут не менее, чем
$$
3(c_o(G-S)-2)+2=3c_o(G-S)-4\geq 3|S|+2
$$
ребер, что невозможно, так как из $S$ куда-либо может идти не более чем $3|S|$ ребер. \qed

\mysubitem Заметим, что условие ``не более двух мостов'' является существенным --- так, изображенный на рисунке кубический граф, имеющий три моста, совершенного паросочетания не имеет: у него имеется запрещающее множество (вершина $a$), размерность которого меньше, чем количество получающихся при его удалении нечетных компонент связности. 

\mysubitem Доказательства указанного выше рода можно обобщить и на более общие случаи. В частности, более-менее похоже доказывается следующий результат.

\begin{theor}[Плесник, 1972]
Пусть $G$ есть $k$-регулярный и $(k-1)$-реберносвязный граф с четным числом вершин. Тогда в графе $G'$, полученном из $G$ удалением не более, чем $(k-1)$ ребер, существует совершенное паросочетание. 
\end{theor}

\myitem Теперь рассмотрим графы, в которых отсутствуют совершенные паросочетания. Для таких графов логичной является попытка построения паросочетания, покрывающего максимальное количество вершин в графе. Наиболее известным результатом здесь является так называемая формула Бержа.

\begin{defin}
Дефицитом $\mathrm{def}(G)$ графа $G$ называется количество его вершин, не покрытых максимальным паросочетанием $M$ графа:
$$
\mathrm{def}(G):=|V(G)|-2|M|.
$$ 
\end{defin}

\begin{theor}[Берж, 1958] Для любого графа $G$ справедливо равенство
$$
\mathrm{def}(G)=\max\limits_{S\subset V(G)}o_c(G-S)-|S|=:n.
$$
\end{theor}

\evidp Пусть $S\subset V(G)$, $M$ --- произвольное максимальное паросочетание в $G$, $G_1,\ldots,G_k$ --- все нечетные компоненты связности в графе $G-S$, $k=c_o(G-S)$. Среди этих нечетных компонент существуют $i$ компонент, содержащих хотя бы одну вершину, не покрытую паросочетанием $M$. Следовательно, $\mathrm{def}(G)\geq i$. С другой стороны, для каждой из $k-i$ оставшихся нечетных компонент существует хотя бы одно ребро, идущее из этой компоненты в одну из вершин множества $S$, и поэтому $k-i\leq |S|$. Таким образом,
$$
\mathrm{def}(G)\geq i\geq k-|S|=c_o(G-S)-|S|\qquad \Longrightarrow\qquad \mathrm{def}(G)\geq n.
$$
Осталось доказать обратное неравенство. 

Если $n=0$, то в графе $G$ по теореме Татта существует совершенное паросочетание, и $\mathrm{def}(G)=0$. Поэтому далее будем считать, что $n>0$. Пусть $H$ --- граф, построенный из $G$ присоединением к $V(G)$ множества $W$ новых $n$ вершин и соединением каждой такой вершины со всеми остальными вершинами множества $V(G)\cup W$. Покажем, что для такого графа $H$ условие (\ref{Tutte_cond}) уже будет выполняться.

Действительно, пусть $T\subset V(H)$. Случай $T=\emptyset$ сводится к проверке того, что граф $H$ имеет четное число вершин. Перебор всех случаев показывает, что четность числа $|V(G)|$ вершин в графе совпадает с четностью $n$ при любых значениях $|S|$. Как следствие, значение $|V(H)|=|V(G)|+n$ всегда четно.

Пусть теперь $T\neq \emptyset$. Если при удалении подмножества $T$ вершин останется хотя бы одна вершина из множества $W$, то граф $H-T$ останется связным, и условие (\ref{Tutte_cond}) выполнено:
$$
o_c(H-T)\leq 1\leq |T|.
$$
В противном случае, то есть в случае, когда $T=W\cup S$, $S\subset V(G)$, мы по определению $n$ получаем
$$
o_c(H-T)=o_c(G-S)\leq n+|S|=|W\cup S|=|T|.
$$  
Следовательно, и в этом случае в графе $H$ существует совершенное паросочетание $N$. В обоих случаях
$$
|N|=\dfrac{|H|}{2}=\dfrac{|V(G)|+n}{2}.
$$ 

Совершенное паросочетание $N$ покрывает либо все точки множества $W$, и тогда в графе $G$ существует паросочетание $\tilde N$ с количеством ребер, равным $|N|-n$, либо только часть этих точек, и тогда количество ребер в паросочетании $\tilde N$ строго больше $|N|-n$. Таким образом, количество $|M|$ ребер в произвольном максимальном паросочетании $M$
$$
|M|\geq |\tilde N|\geq |N|-n=\dfrac{|V(G)|+n}{2}-n=\dfrac{|V(G)|-n}{2}\qquad \Longrightarrow\qquad
n\geq |V(G)|-2|M|=\mathrm{def}(G).
$$
\qed



\section*{Упражнения}

\begin{exerc} 
Найти количество совершенных паросочетаний в полном графе $K_{2n}$, а также в графе Петерсена.
\end{exerc}

\begin{exerc} 
Найти количество $V_1$-насыщенных паросочетаний в полном двудольном графе $K_{n,m}$.
\end{exerc}


\begin{exerc}
Подсчитать количество совершенных паросочетаний у дерева.
\end{exerc}


\begin{exerc} 
Найдите минимальный пример двудольного графа, в котором существует паросочетание, наибольшее по включению (то есть в него нельзя больше добавить ни одно ребро), но не являющееся максимальным.
\end{exerc}

\begin{exerc} 
Доказать, что в непустом регулярном двудольном графе всегда существует паросочетание, соединяющее каждую вершину одного блока с некоторой вершиной другого блока, и наоборот.
\end{exerc}

\begin{exerc} 
Докажите, что если $|N(S)| > |S|$ для любого $\emptyset \neq S \subset V_1$ в двудольном графе с долями $V_1$ и $V_2$, то любое ребро принадлежит хотя бы одному паросочетанию, покрывающему $V_1$.
\end{exerc}

\begin{exerc} 
Имеется колода из $nm$ карт, по одной карте для каждого значения масти из $[m]$ и для каждого значения достоинства из $[n]$. Карты разложены в таблицу с $n$ строками и $m$ столбцами, по одной карте в каждой ячейке. Докажите, что можно найти $m$ карт, которые имеют разные масти и лежат в разных столбцах.
\end{exerc}

\begin{exerc}
Пусть $G$ — двудольный граф, в котором есть паросочетание, покрывающее долю $X$. Докажите, что количество рёбер в $G$, которые не принадлежат ни одному паросочетанию, покрывающему $X$, не превосходит $\binom{|X|}{2}$. Покажите, что эта оценка достигается при любом значении $|X|$.
\end{exerc}

\begin{exerc}\label{exerc:Hall_gen}
Пусть $s\in[0,m]$, $m=|X|$, и пусть для любого подмножества $U\subset X$ мощности $|U|\geq s$ мощность $|N(U)|\geq |U|-s$. Доказать, что в двудольном графе $G$ существует паросочетание, состоящее хотя бы из $(m-s)$ ребер. 
\end{exerc}

\begin{exerc}
С помощью предыдущего упражнения доказать теорему Кёнига \ref{theor:Konig}.
\end{exerc}


\begin{exerc} Доказать следствие из теоремы Плесника: в условиях теоремы для любого ребра $e\in E(G)$ существует совершенное паросочетание графа $G$, содержащее $e$. 
\end{exerc}

\begin{exerc} $k$-фактором графа $G$ называется его остовной $k$-регулярный подграф. Доказать, что у $2k$-регулярного графа есть $2$-фактор. 
\end{exerc}




\section*{Решение упражнений}

\begin{sol_exerc}

\end{sol_exerc}

\begin{sol_exerc} 
Каждое такое паросочетание можно рассматривать как $n$-перестановку из $m$ элементов без повторений, поэтому общее число $V_1$-насыщенных паросочетаний в $K_{n,m}$ равно $(m)_n$.
\end{sol_exerc}

\begin{sol_exerc} 
Дерево может либо иметь лишь одно совершенное паросочетание, либо не иметь таких паросочетаний вообще. Докажем это по индукции. Дерево $K_2$ имеет лишь одно совершенное паросочетание, дерево $K_1$ совершенного паросочетания не имеет.  Теперь рассмотрим дерево $T$ на $n > 2$ вершинах и какой-то лист $v$ в нём. Очевидно, что если $u$ — сосед $v$, то ребро $uv$ нужно включить в совершенное паросочетание. При этом все другие рёбра, инцидентные $u$, в паросочетание включены быть на должны. Таким образом, любое совершенное паросочетание в $T$ однозначно определяется совершенным паросочетанием в лесу $T - \{u,v\}$, в каждом из деревьев которого есть не более одного совершенного паросочетания по предположению индукции.
\end{sol_exerc}

\begin{sol_exerc} 
Минимальный такой пример — граф на четырёх вершинах, соединённых тремя рёбрами в цепочку. Паросочетание, состоящее из центрального ребра, наибольшее по включению. Однако, взяв два крайних ребра, можно построить паросочетание большей мощности. 
\end{sol_exerc}

\begin{sol_exerc} Рассмотрим произвольное подмножество $U$ блока $X$. Так как степень любой вершины в графе $G$ одинакова и равна $d$, то из этого множества исходят ровно $d\cdot |U|$ ребер. Рассмотрим теперь множество смежных с $U$ вершин $N(U)\subset Y$. Часть инцидентных этим вершинам ребер соединяют эти вершины с вершинами из множества $U\subset X$, а часть --- с какими-то другими вершинами из блока $X$. Так как количество таких ребер равно $d\cdot |N(U)|$, то справедливо неравенство $d\cdot |N(U)|\geq d\cdot |U|$. Следовательно, $|N(U)|\geq |U|$ для любого $U\subset X$. Поэтому, согласно теореме Холла, в таком графе всегда существует $X$-насыщенное паросочетание $M$ с количеством ребер $|M|=|X|$. Аналогичные рассуждения, примененные к вершинам блока $Y$, показывают, что в таком графе существует и $Y$-насыщенное паросочетание $M'$ с количеством ребер, равным $|M'|=|Y|$. Следовательно, в таком графе $|X|=|Y|$, а следовательно, в графе существует паросочетание, соединяющее любую вершину одного блока с некоторой вершиной второго блока, и наоборот.
\end{sol_exerc}

\begin{sol_exerc} 
Действительно, выберем любое ребро $uv, u \in V_1, v \in V_2$ в описанном в условии графе $G$ и включим его в паросочетание. Тем самым мы покроем вершину $u$, но при этом запретим включать в паросочетание другие рёбра, инцидентные $v$. Можно считать, что мы просто удилим эти рёбра из графа. Таким образом, в графе $G\, \backslash \{u,v\}$ выполнено условие $\forall S \subseteq V_1 \backslash \{u\} : |N(S)| \geq |S|$, то есть условие теоремы Холла. Построим в этом графе паросочетание, покрывающее все вершины множества $V_1 \backslash \{u\}$, после чего добавим в него ребро $uv$, получив требуемое в условии задачи паросочетание в графе $G$.
\end{sol_exerc}

\begin{sol_exerc} 
Попробуем переформулировать эту задачу на языке теории графов. Пусть $G$ — двудольный граф, в котором доля $V_1$ — столбцы, доля $V_2$ — масти, а рёбра проведены между теми парами вершин, для которых в соответствующем столбце есть соответствующая масть. Требуется доказать, что в таком графе есть совершенное паросочетание. Рассмотрим какое-то множество столбцов $S$. В столбцах из $S$ лежит $n\cdot |S|$ карт, из чего заключаем, что в этих столбцах встретилось как минимум $|S|$ мастей. Для графа выполнено условие Холла, а значит в нём есть совершенное паросочетание.
\end{sol_exerc}

\begin{sol_exerc} 
Вначале предъявим граф, на котором достигается указанная в условии оценка. Пусть $X=\{x_1,x_2,\dots, x_m\}, Y=\{y_1,y_2,\dots, y_m\}$. Проведём ребра $(x_i,y_j)$, для всех пар $(i,j),$ таких что $i \leq j$. В таком графе, очевидно, есть совершенное паросочетание $\{(x_i,y_i)\,|\,i \in [m]\}.$ Тем не менее, ни одно из рёбер $(x_i,y_j),$ для которых  $i < j$, не принадлежит ни одному совершенному паросочетанию, так в графе $G \,\backslash \{x_i,y_j\}$ нарушено условие Холла для множества вершин $\{x_k \,|\, k \in [m]\,\backslash \,[j-1]\}$.

Теперь докажем, что большего количества рёбер с указанным свойством в двудольном графе быть не может. Переименуем вершины в графе $G$ таким образом, чтобы в нём существовало паросочетание $\{(x_i,y_i)\,|\,i \in [m]\},$ покрывающее долю $X, |X|=m$. Пусть вначале $|Y|=m$. Тогда, для каждой пары $i \neq j$ в графе $G$ верно, что если присутствуют оба ребра $e_1 = (x_i,y_j)$ и $e_2 = (x_j, y_i)$, то они оба принадлежат какому-то совершенному паросочетанию. Иными словами, не более одного ребра из $\{e_1,e_2\}$ присутствует в графе и не принадлежит ни одному совершенному паросочетанию. Для $|Y|=m$ оценка доказана. 

Осталось заметить, что если добавить в $Y$ некоторое количество вершин и рёбра из этих вершин в какие-то вершины из $X$, то каждое из вновь добавленных рёбер $(x_p,y_q)$ будут принадлежать паросочетанию, покрывающему $X$ и имеющему вид  $\{(x_i,y_i)\,|\,i \in [m]\,\backslash \,\{p\}\} \cup \{(x_p,y_q)\}.$ При этом добавление рёбер не влияет на свойство уже имеющихся рёбер лежать на каком-то паросочетании, покрывающем $X$. 
\end{sol_exerc}


\begin{sol_exerc}

\end{sol_exerc}

\begin{sol_exerc}
Неравенство $l\leq k$ очевидно --- любое ребро паросочетания должно содержать хотя бы одну вершину из вершинного покрытия графа $G$. Покажем, что в $G$ существует паросочетание, состоящее из $k$ ребер. Воспользуемся для этого результатом упражнения \ref{exerc:Hall_gen}. Пусть хотя бы для одного подмножества $U\subset X$ условия этого упражнения нарушаются, а именно, пусть существует такое $U$, что $|N(U)|<|U|-s$. Выберем в качестве $s$ число $|X|-k$. Тогда получим, что $|N(U)|<k-(|X|-|U|)$. Рассмотрим теперь множество вершин $(X\setminus U)\cup N(U)$. Количество вершин в этом множестве строго меньше $k$. Кроме того, это множество образует вершинное покрытие графа $G$. Это, в свою очередь, противоречит тому, что $k$ есть количество вершин в минимальном вершинном покрытии графа $G$. 
\end{sol_exerc}

\begin{sol_exerc}

\end{sol_exerc}

\begin{sol_exerc}

\end{sol_exerc}





\section{Частично упорядоченные множества}

\myitem Следующее полезное утверждение, известное как теорема Дилуорса, представляет собой один из наиболее важных фактов в теории так называемых частично упорядоченных множеств.  

\mysubitem Начнем с определения частично упорядоченного множества.

\begin{defin}
\emph{Частично упорядоченным множеством} называется множество $P$ с введенным на нем бинарным отношением $\preccurlyeq$ (так называемым \emph{отношением частичного порядка}), удовлетворяющим следующим трем аксиомам:
\begin{enumerate}
\item Рефлексивность: для любого $x\in P$ справедливо $x\preccurlyeq x$.
\item Антисимметричность: если $x \preccurlyeq y$ и $y\preccurlyeq x$, то $x=y$.
\item Транзитивность:  если $x \preccurlyeq y$ и $y\preccurlyeq z$, то $x\preccurlyeq z$.
\end{enumerate}
\end{defin}
 
Сделаем несколько замечаний к данному определению. Во-первых, заметим, что от отношения эквивалентности данное определение отличается аксиомой антисимметричности: для отношения $\sim$ эквивалентности вместо этой аксиомы формулировалась аксиома симметричности, утверждающая, что если $x\sim y$, то $y\sim x$. Далее, два элемента $x,y\in P$ называются \emph{сравнимыми,} если \emph{либо} $x\preccurlyeq y$, \emph{либо} $y\preccurlyeq x$. Наконец, обозначение $x\prec y$ означает, что $x \preccurlyeq y$ и $x\neq y$. 

\mysubitem Приведем несколько примеров частично упорядоченных множеств.

\begin{examp}
Пусть $P=\N$, а отношение $\preccurlyeq$ есть отношение $\leq$. Тогда $P$ является частично упорядоченным множеством. Заметим сразу, что данный пример не очень интересен, так как на самом деле это есть линейно упорядоченное множество, то есть множество, в котором любые два элемента можно сравнить между собой. 
\end{examp}


\begin{examp}
Пусть снова $P=\N$, но на этот раз отношение $\preccurlyeq$ есть отношение делимости $\backslash$: $x\preccurlyeq y$, если $x$ делит $y$. Можно в качестве $P$ вместо $\N$ брать $D_n$ --- множество всех целых положительных делителей числа $n$. На таком множестве $\backslash$ также задает структуру частично упорядоченного множества. 
\end{examp}

\begin{examp}
Пусть $[n]:=\{1,\ldots,n\}$, а $P([n])=:B_n$ есть множество всех подмножеств множества $[n]$. В качестве $\preccurlyeq$ возьмем отношение $\subseteq$. Тогда мы получаем частично упорядоченное множество, часто называемое булевой алгеброй степени $n$. При этом говорят, что $B_n$ состоит из всех подмножеств множества $[n]$, упорядоченных по включению. В этом частично упорядоченном множестве какие-то элементы сравнимы между собой, а какие-то --- нет. Например, если $n=4$, то $\{1,2\}\subseteq \{1,2,3\}$, а $\{2\}$ и $\{1,3\}$ несравнимы между собой. 
\end{examp}

\begin{examp}
Множество $\Pi_n$ всех разбиений множества $[n]$ можно сделать частично упорядоченным множеством, положив $\pi \preccurlyeq \sigma$, если любой блок $\pi$ содержится в одном из блоков $\sigma$. Например, если $\pi=(137,2,46,58,9)$, а $\sigma=(13467,2589)$, то $\pi \preccurlyeq \sigma$. В этом случае говорят, что разбиение $\pi$ есть измельчение разбиения $\sigma$, а частично упорядоченное множество $\Pi_n$ состоит из разбиений множества $[n]$, упорядоченных по измельчению.
\end{examp} 

\begin{examp}
Пусть $P$ есть множество вершин некоторого орграфа без циклов. Тогда $v_1\preccurlyeq v_2$, если существует путь из вершины $v_2$ в вершину $v_1$. 
\end{examp}


\mysubitem Конечные частично упорядоченные множества удобно изображать с помощью так называемых диаграмм Хассе.

\begin{defin}
Говорят, что элемент $y$ покрывает элемент $x$, если $x \prec y$ и не существует элемента $x\in P$, такого, что 
$x\prec z\prec y$. 
\end{defin}

\begin{defin}
Диаграммой Хассе конечного частично упорядоченного множества $P$ называется граф, вершины которого помечаются элементами данного множества $P$. Если $x\prec y$, то вершина, соответствующая $y$, располагается в диаграмме выше вершины, отвечающей элементу $x$. Если, кроме того, $y$ покрывает $x$, то в диаграмме проводится ребро, соединяющее вершины $x$ и $y$.
\end{defin}

\begin{examp}\label{B_3}
Диаграмма Хассе для $B_3$ имеет следующий вид:
\end{examp}

\begin{examp}\label{D_60}
Диаграмма Хассе для множества $D_{60}=\{1,2,3,4,5,6,10,12,15,20,30,60\}$ всех делителей числа $60$, частично упорядоченное по отношению делимости, имеет следующий вид:
\end{examp}

\mysubitem Введем два важных понятия --- цепи и антицепи в частично упорядоченном множестве $P$. 

\begin{defin}
Подмножество $P_1\subset P$ частично упорядоченного множества $P$ называется \emph{цепью,} если любые два его элемента сравнимы. 
\end{defin}

Так, в примере \ref{B_3} цепью является подмножество $\{\emptyset,\{1\},\{1,3\},\{1,2,3\}\}$. В примере \ref{D_60} цепь образуют, например, элементы $1,3,3,6,30,60,60$. 

Сразу же заметим, что элементы $x_1,\ldots,x_n$ конечной цепи всегда можно пронумеровать так, чтобы $x_1\preccurlyeq x_2\preccurlyeq \ldots\preccurlyeq x_n$. В частности, если цепь $P_1$ рассматривать саму по себе как частично упорядоченное множество, то оно оказывается линейно упорядоченным. 


\begin{defin}
Подмножество $P_1\subset P$ частично упорядоченного множества $P$ называется \emph{антицепью,} если любые два его элемента несравнимы между собой. 
\end{defin}

Так, в примере \ref{B_3} множество элементов $\{\{1,2\},\{1,3\},\{2,3\}\}$ частично упорядоченного множества $B_3$ образуют антицепь. Для примера \ref{D_60} в качестве антицепи можно выбрать, например, подмножество $\{5,6,4\}$. 


\mysubitem Теперь мы можем, наконец, сформулировать теорему Дилуорса.

\begin{theor}[Dilworth, 1950]
В любом конечном частично упорядоченном множестве $P$ минимальное количество $k$ попарно непересекающихся цепей, покрывающих все элементы множества $P$, равно максимальному количеству $l$ элементов в антицепи. 
\end{theor}

Так, максимальное количество элементов в антицепи для примера \ref{D_60} равно, очевидно, четырем --- это есть подмножество вида $\{15,10,6,4\}$. Далее, существует, например, следующие четыре цепи, покрывающие все множество $D_{60}$: 
$$
\{1,2,4,12,15\},\qquad \{3,6,30\},\qquad \{5,10,20\},\qquad \{15\}.
$$

\evidp Как обычно, неравенство $l\leq k$ очевидно --- ни одна цепь не может содержать более одного элемента антицепи. Докажем с помощью теоремы Кёнига, что справедливо и обратное неравенство $l\geq k$. Рассмотрим для этого двудольный граф $G$, блоки $V_1$ и $V_2$ которого состоят из одного и того же множества элементов частично упорядоченного $n$-элементного множества $P$. Соединим $a_i\in V_1$ и $b_j\in V_2$ ребром в случае, если $a_i \prec b_j$. 

Рассмотрим теперь максимальное паросочетание в двудольном графе. Пусть оно состоит из $m$ ребер, каждому из которых соответствует отношение вида $a_i\prec b_j$. При этом все $a_i\in V_1$ различны, все $b_j\in V_2$ также различны, однако не исключены случаи, когда при некоторых $i$ и $j$ элементы $a_i=b_j$ в множестве $P$. Возьмем теперь в частично упорядоченном множестве $n$ цепей, состоящих из всех $n$ элементов множества $P$, и уменьшим их количество на $m$ штук, объединяя элементы этих цепей согласно следующему алгоритму: если при фиксированном $i$ элементы $a_i$ и $b_j$, $i<j$, соединены одним из ребер максимального паросочетания, то к цепи, содержащей $a_i$, добавим элемент $a_j$. По окончании данного процесса мы получим ровно $k=n-m$ цепей. 

Построим теперь антицепь, состоящую как минимум из $n-m$ элементов. Для этого заметим, что, согласно теореме Кёнига, в графе $G$ найдется вершинное покрытие, состоящее ровно из $m$ вершин, часть из которых принадлежат блоку $V_1$, а часть --- блоку $V_2$. Выкинем элементы, соответствующие данным вершинам, из частично упорядоченного множества $P$. Так как часть вершин в вершинном покрытии могут как элементы множества $P$ совпадать (то есть $a_i=b_j$), то в полученном в результате таких действий частично упорядоченном множестве $P_1$ останется $l\geq n-m$ элементов. Осталось убедиться, что они обязательно образуют антицепь в множестве исходном множестве $P$. 

Предположим, что это не так, то есть для каких-то элементов $a,b\in P_1$ выполняется условие $a\prec b$. Но это невозможно, так как в противном случае в двудольном графе $G$ существовало бы ребро, не покрытое нашим вершинным покрытием.

Таким образом, мы доказали, что $l\geq n-m=k$. Учитывая, что $l\leq k$, мы получаем необходимое нам равенство $l=k$. \qed 

\mysubitem Как и в случае теоремы Менгера, для частично упорядоченных множеств справедливо и двойственное утверждение.

\begin{theor}
Пусть $P$ есть частично упорядоченное множество. Тогда наибольшее количество элементов в цепи совпадает с минимальным количеством антицепей, покрывающих все элементы множества $P$. 
\end{theor} 

Интересно, что это утверждение было сформулировано и доказано только в 1971 году Леоном Мирским. И это несмотря на то, что теорема Мирского доказывается значительно проще, чем двойственная к ней теорема Дилуорса. 




\section*{Упражнения}

\begin{exerc} Пусть $D_n=\{a_1,\ldots,a_n\}$ есть множество натуральных чисел. Известно, что среди любых трех из них всегда можно выбрать два числа, одно из которых делится на другое. Доказать, что эти числа можно покрасить в два цвета так, чтобы для любых двух чисел одного цвета одно делилось бы на другое. Обобщить данный результат на случай, когда среди любых $m$ чисел можно выбрать ровно два числа, одно из которых делилось бы на другое. 
\end{exerc}

\begin{exerc} Король сказочной страны пригласил на пир всех людоедов своей страны. Среди них есть людоеды, которые хотят съесть других людоедов. Известно, что максимальная цепочка, в который первый людоед хочет съесть второго, второй --- третьего и так далее, состоит из шести людоедов. Каково минимальное количество столов, за которые король может так рассадить людоедов, чтобы ни за одним из этих столов никто не захочет съесть никого из сидящих за тем же столом? 
\end{exerc}

\begin{exerc}
Можно ли из пяти различных чисел $(a_1,\ldots,a_5)$, выписанных в ряд, выбрать три, стоящие либо в порядке возрастания, либо в порядке убывания?
\end{exerc}

\begin{exerc}
С помощью теоремы Мирского доказать следующее утверждение, принадлежащее Эрдешу и Секерешу и доказанное ими в 1935 году: в частично упорядоченном множестве из $(nm+1)$-го элемента существует либо цепь, состоящая из $m+1$ элемента, либо антицепь, состоящая из $n+1$ элемента.
\end{exerc}

\begin{exerc} Можно ли на прямой разместить шесть отрезков так, чтобы в любой тройке этих отрезков нашлись два пересекающихся, и никакая точка прямой не принадлежала четырем и более отрезкам? А семь отрезков?
\end{exerc}


\begin{exerc} Даны $50$ отрезков на прямой. Доказать, что если среди них нельзя найти $M=8$ отрезков, любые два из которых имеют общую точку, то существует $m=8$ отрезков, никакие два из которых не имеют общих точек. Обобщить результат на случай произвольного количества отрезков, а также произвольных чисел $m$ и $M$. 
\end{exerc}



\section*{Решение упражнений}

\begin{sol_exerc} Отношение делимости превращает множество $D_n$ в частично упорядоченное множество. То, что среди любых трех элементов $D_n$ всегда можно выбрать два числа $a,b\in D_n$, такие, что $a\backslash b$, означает, что размер максимальной антицепи в $D_n$ равен двум. Следовательно, согласно теореме Дилуорса, существует ровно две цепи, покрывающие все элементы множества $D_n$. 

Случай, когда среди любых $m$ чисел существует ровно два числа, одно из которых делит другое, означает, что размер частично упорядоченного множества в $D_n$ равен $(m-1)$. Следовательно, в этом случае $D_n$ можно раскрасить в $(m-1)$ цветов. 
\end{sol_exerc}

\begin{sol_exerc} Очевидно, что это --- задача на применение теоремы Мирского, и поэтому королю нужно накрыть ровно шесть столов. Это можно доказать и напрямую. Именно, посадим всех людоедов-вегетарианцев, не желающих съесть никого из своих коллег, за первый стол. За второй стол посадим всех людоедов, желающих скушать своих коллег, посаженных за первый стол, и так далее. Заметим, что ровно те же рассуждения, примененные к общему случаю, позволяют доказать и саму теорему Мирского.   
\end{sol_exerc}

















\section{Планарные графы и их основные свойства}

\myitem Мы уже привыкли изображать графы с помощью рисунков на плоскости. На этих рисунках вершины изображаются точками, а ребра --- соединяющими эти точки отрезками кривых. Обычно нам хочется нарисовать граф как можно проще, избежав излишних пересечений кривых, изображающих ребра графа. В идеале хочется изобразить граф на плоскости так, чтобы ребра пересекались разве что в точках, изображающих вершины графа. Для некоторых графов это сделать достаточно просто (смотри рис.,a, на котором изображен граф $K_4$), для некоторых (например, для графов $K_5$ и $K_{3,3}$, показанных на рис.,b), как мы позже убедимся, это сделать в принципе невозможно. В этой связи мы можем дать следующее определение.

\begin{defin}
Планарным графом называется граф $G$, который можно нарисовать на плоскости так, чтобы изображающие его ребра отрезки кривых пересекались лишь в точках, изображающих вершины графа $G$. Такой способ изображения графа на плоскости называется \emph{правильным вложением} графа $G$ в плоскость, а само изображение --- \emph{плоским графом} $\tilde{G}$. Изображающие ребра графа $G$ отрезки кривых на плоскости называются ребрами плоского графа $\tilde{G}$, а точки, изображающие вершины графа $G$ --- вершинами плоского графа $\tilde{G}$. 
\end{defin}

Планарные графы достаточно часто встречаются на практике, с ними связано большое число красивых и важных задач теории графов, включая, в частности, и одну из самых известных проблем теории графов --- проблему о четырех красках. Основная цель данного параграфа --- изложить базовые факты, связанные с такими графами. Начнем же мы с критериев планарности графов.

\mysubitem Заметим, прежде всего, что любое правильное вложение планарного графа $G$ в плоскость разбивает эту плоскость на несколько областей $f_i$, называемых \emph{гранями.} Ровно одна из этих областей всегда неограниченна, она называется внешней гранью. Остальные грани называются внутренними.

\begin{examp}\label{examp:plane_graph}
На рис. изображен плоский граф $\tilde{G}$, имеющий пять граней $f_1,\ldots,f_5$. Грань $f_1$ является внешней гранью графа $\tilde{G}$, а грани $f_2,\ldots,f_5$ --- внутренними гранями. 
\end{examp}

Граница любой грани состоит из некоторого непустого набора вершин и ребер плоского графа $\tilde{G}$. Говорят, что такие вершины и ребра \emph{инцидентны} грани $f$. Количество инцидентных с $f$ ребер называется \emph{степенью} $\deg(f)$ грани $f$.

Мостом (cut edge) называется ребро, с обеих сторон которого лежит одна и та же грань. Как следует из приведенного выше определения степени грани $f$, любой мост дает в степень $\deg(f)$ вклад, равный двум. Для остальных (так называемых граничных) ребер этот вклад равен единице. 

Так, в примере \ref{examp:plane_graph} инцидентными грани $f_5$ являются ребра $e_5,\ldots,e_8$ и вершины $v_1,v_5,v_6,v_7$. Ребро $e_8$ является мостом. Степень грани $f_5$ равна пяти (ребро $e_8$ считается дважды). 

Для суммы степеней всех граней несложно доказать утверждение, аналогичное теореме \ref{theor:first_th_gr}: 
\begin{equation}
\label{eq:sum_deg_faces}
\sum_{f\in\tilde{G}}\deg(f)=2|E(\tilde{G})|.
\end{equation}
Действительно, суммируя степени граней, мы каждое граничное ребро суммируем дважды. Каждый мост, в свою очередь, вносит в степень грани значение, равное двум. Таким образом, суммирование степеней всех граней действительно дает нам удвоенное количество всех ребер плоского графа $\tilde{G}$.  

\begin{rem} С топологической точки зрения никакой особой разницы между внешней и внутренними гранями нет. Для того, чтобы это понять, достаточно наряду с вложением графа в плоскость рассмотреть вложение графа в сферу (рис.). Аналогично плоскости, правильным вложением графа $G$ в сферу называется такое изображение графа на сфере, при котором изображающие ребра графа $G$ кривые пересекаются между собой разве что только в точках, отвечающих вершинам графа $G$. Достаточно очевидно, что граф является планарным тогда и только тогда, когда его можно правильно вложить в сферу. 

Для того, чтобы в этом убедиться, следует, например, рассмотреть стереографическую проекцию сферы $S$ на плоскость $P$ (рис.), которая строится следующим образом. Сфера ставится на плоскость, а из точки $N$, диаметрально противоположной точке касания сферы $S$ и плоскости $P$, проводятся лучи. Любой такой луч пересекает сферу $S$ в точке $s$, а плоскость $P$ --- в точке $p$. Тем самым устанавливается взаимно-однозначное отображение $\eta\colon s\to p$, которое и называется стереографической проекцией. Ясно теперь, что любому плоскому графу $\tilde{G}$, изображающему планарный граф $G$ на плоскости $P$, можно с помощью стереографической проекции взаимно-однозначно сопоставить некоторое изображение этого же графа на сфере, которое представляет собой правильное вложение $G$ в сферу $S$. 

Вернемся теперь к произвольному плоскому графу, выберем в нем внутреннюю грань $f$ и рассмотрим произвольную внутреннюю точку $p$ этой грани. Стереографическая проекция отображает эту точку в некоторую точку $s$ на сфере.  Если теперь взять точку $s$ в качестве северного полюса сферы и установить с помощью стереографической проеции новое взаимно-однозначное соответствие сферы $S$ с некоторой новой плоскостью $P'$, то в результате такого отображения грань $f$ окажется внешней гранью некоторого плоского графа на плоскости $P$, изоморфного исходному графу $G$.  
\end{rem} 

\mysubitem При доказательстве непланарности того или иного графа важную роль играет теорема Жордана. Эта теорема имеет дело с так называемой замкнутой простой кривой, то есть замкнутой кривой, нигде не пересекающей саму себя. Такая кривая $C$ делит всю плоскость на две области --- внутреннюю $(\rm{int}(C))$ и внешнюю $(\rm{ext}(C))$ по отношению к кривой $C$. 

\begin{lemm}[The Jordan Curve Theorem] 
Любая кривая, соединяющая точку $a\in \rm{int}(C)$ с точкой $b\in \rm{ext}(C)$, имеет с кривой $C$ хотя бы одну точку пересечения (рис.).
\end{lemm}

Покажем, как использовать эту теорему для доказательства непланарности графа $K_5$. 

\begin{theor}
Граф $K_5$ не является планарным графом.
\end{theor}

\evidp Предположим противное, то есть предположим, что граф $K_5$ является планарным. Рассмотрим простой цикл $C=v_1v_2v_3v_4v_1$ в этом графе. С топологической точки зрения такой цикл представляет собой замкнутую жорданову кривую $C$, разделяющую плоскость $\R_2$ на внутреннюю и внешнюю области. В одной из этих областей должна лежать вершина $v_5$. Предположим для определенности, что $v_5\in \rm{int}(C)$, и соединим $v_5$ с вершинами $v_i$, $i=1,\ldots,4$. Все, что нам осталось --- это нарисовать ребра $v_1v_3$ и $v_2v_4$. Ясно, что внутри цикла $C$ они лежать уже не могут --- в противном случае, например, ребро $v_1v_3$ согласно теореме Жордана должно было бы пересечь либо ребро $v_2v_5$, либо ребро $v_4v_5$. Поэтому эти ребра обязаны лежать в области $\rm{ext}(C)$. Соединяя в этой области точки $v_1$ и $v_3$, мы получим на плоскости цикл $C_1=v_1v_3v_5v_1$. Так как точка $v_4$ лежит вне этого цикла, а точка $v_2$ --- внутри него, то, по теореме Жордана, любая кривая, соединяющая $v_2$ и $v_4$, обязана пересекать цикл $C_1$. Следовательно, граф $K_5$ не является планарным. 
\qed 

Аналогично можно доказать и непланарность графа $K_{3,3}$ (смотри упражнение \ref{exerc:K_3_3_nonplanar}). 

\mysubitem Оказывается, графы $K_5$ и $K_{3,3}$ являются в определенном смысле основными непланарными графами в следующем смысле.

\begin{defin}
Подразбиением ребра $e=\{x,y\}$ графа $G$ с формальной точки зрения называется процесс замены ребра $e$ на путь вида $\{x,z,y\}$, в котором $z$ есть вершина степени два. Неформально подразбиение ребра просто означает, что мы на ребре $e$ размещаем дополнительную вершину $z$ (рис.). 
\end{defin}

\begin{defin}
Подразбиением графа $G$ называется граф $G'$, полученный из исходного графа последовательным подразбиением его ребер. 
\end{defin}

На рис. показан пример графа $G'$, являющегося подразбиением графа $G$. 

Понятно, что замена любого ребра в графе $G$ на простой путь никак не влияет на возможность вложения данного графа в плоскость. Поэтому достаточно очевидным является следующее

\begin{propos}
Граф $G$ является планарным тогда и только тогда, когда любое его подразбиение также является планарным графом.
\end{propos}

Как следствие, никакой планарный граф не может содержать подграф, представляющий собой подразбиение ни графа $K_5$, ни графа $K_{3,3}$. Польский математик Казимир Куратовский в 1930 году доказал замечательный факт --- оказывается, это условие является не только необходимым, но и достаточным условием непланарности графа $G$.

\begin{theor}[Куратовский, 1930]
Граф $G$ не является планарным тогда и только тогда, когда он содержит подграф, представляющий собой подразбиение $K_5$ или $K_{3,3}$. 
\end{theor}

\mysubitem Теорема Куратовского не всегда удобна для практической проверки планарности того или иного графа. Немецкий математик Вагнер в 1937 году предложил еще одну, несколько более удобную характеризацию планарных графов, основанную на понятии минора графа $G$. 

\begin{defin}
Граф $H$ называется минором графа $G$, если $H$ можно получить из $G$ удалением и/или стягиванием ребер графа $G$. 
\end{defin}

В качестве примера рассмотрим граф Петерсона (рис.). Стягивая пять ребер, соединяющих внешние и внутренние вершины, мы получаем граф $K_5$. Следовательно, $K_5$ является минором графа Петерсона. 

Достаточно очевидно, что удаление или стягивание ребра в планарном графе не приводит к потере планарности. Иными словами, любой минор планарного графа планарен. Так как графы $K_5$ и $K_{3,3}$ планарными не являются, то любой граф, имеющий хотя бы в качестве одного из своих миноров графы $K_5$ и $K_{3,3}$, планарным не является. Вагнер доказал, что верно и обратное утверждение.

\begin{theor}[Wagner, 1937]
Граф является планарным тогда и только тогда, когда графы $K_5$ и $K_{3,3}$ не являются его минорами. 
\end{theor}

Эта теорема лежит в основе эффективного алгоритма, позволяющего за полиномиальное время проверить граф на планарность. 



\myitem Приведенное выше доказательство непланарности графа $K_5$ использовало лемму Жордана. Оказывается, однако, что это же свойство графа $K_5$, равно как и многие другие свойства планарных графов, можно достаточно просто доказать с использованием знаменитой формулы Эйлера, связывающей количество вершин, ребер и граней в плоских графах.

\mysubitem Изучая выпуклые многогранники, Леонард Эйлер заметил, что в любом из них сумма числа $V$ вершин и числа $F$ граней всегда равна сумме $E+2$, где $E$ --- количество ребер многогранника:
\begin{equation}
\label{eq:Euler_polyhedron}
V+F=E+2.
\end{equation}
Проверив данный факт вначале экспериментально, на многочисленных примерах, Эйлер затем нашел строгое доказательство соотношения (\ref{eq:Euler_polyhedron}). В дальнейшем выяснилось, что формула (\ref{eq:Euler_polyhedron}) верна для любых многогранников, поверхность которых топологически эквивалентна сфере. Иными словами, эта формула верна для любых связных графов, правильно вложенных в сферу, а следовательно, и для любых связных плоских графов. 

\begin{theor}
Количества вершин $v=|V(\tilde{G})|$, ребер $e=|E(\tilde{G})|$ и граней $f=|F(\tilde{G})|$ произвольного связного плоского графа $\tilde{G}$ удовлетворяют следующему соотношению:
\begin{equation}
\label{eq:Euler_planar}
v+f-e=2.
\end{equation}
\end{theor}

\evids проведем индукцией по количеству $f$ граней плоского графа $G$. Достаточно очевидно, что любой связный плоский граф без циклов, то есть любое плоское дерево, имеет в точности одну грань. Но для дерева количество ребер и вершин связаны равенством $v-f=1$, так что для случая $f=1$ теорема верна. 

Предположим теперь, что теорема верна для всех плоских связных графов с $(f-1)$-й гранью, $f>1$, и покажем, что она остается верной и для любого плоского связного графа $\tilde{G}$ с количеством граней, равным $f$. Так как $f>1$, то такой граф содержит хотя бы один простой цикл. Произвольное ребро $e$ этого цикла принадлежит границам ровно двух граней $f_1$ и $f_2$. Удаление этого ребра приводит к образованию единой грани $f_{12}=f_1\cup f_2$. Так как $e$ принадлежит циклу графа $\tilde{G}$, то получающийся после удаления ребра $e$ плоский граф $\tilde{G}-e$ остается связным. По индукционному предположению, для такого графа справедлива формула Эйлера 
$$
v+(f-1)-(e-1)=2.
$$
Отсюда следует, что формула (\ref{eq:Euler_planar}) верна и для исходного графа $\tilde{G}$. \qed 

\mysubitem Формула Эйлера является чрезвычайно мощным инструментом доказательства многих полезных фактов, касающихся плоских графов. Например, априори не очевидно, что различные плоские графы, отвечающие вложению одного и того же связного планарного графа $G$ в плоскость, имеют одинаковое количество граней. С помощью же формулы Эйлера данное утверждение доказывается абсолютно элементарно.

\begin{propos}
Все плоские вложения одного и того же связного планарного графа $G$ имеют одинаковое количество граней. 
\end{propos}

\evidp Согласно формуле Эйлера (\ref{eq:Euler_planar}), количество $f$ граней плоского графа $\tilde{G}$ зависит лишь от количества вершин и ребер исходного планарного графа $G$ и никак не зависит от конкретного способа вложения $G$ в плоскость. \qed

\mysubitem С помощью теоремы Эйлера можно получить некоторые полезные оценки на количество ребер в плоских графах.

\begin{defin}
Триангуляцией $\R_2$ называется плоский простой граф, степень $\deg(f)$ любой грани которого (включая и внешнюю грань) равна трем. 
\end{defin}

\begin{propos}\label{propos:edge_plan_graphs}
Плоский простой граф $\tilde{G}$, построенный на $n\geq 3$ вершинах, имеет не более чем $3n-6$ ребер, причем равенство
$$
e=3n-6
$$
достигается лишь в случае плоской триангуляции $\R_2.$
\end{propos}

\evidp Прежде всего, заметим, что достаточно рассматривать только связные графы. Действительно, добавляя ребра, мы можем превратить любой несвязный граф в связный, для которого неравенство $e\leq (3n-6)$ справедливо. Тем более оно справедливо и для исходного несвязного графа.

В простом связном графе степень любой грани больше или равна трем. Следовательно, сумма степеней всех граней такого графа больше или равна $3f$. С другой стороны, согласно равенству (\ref{eq:sum_deg_faces}), эта же сумма равна удвоенному количеству ребер. Иными словами,
$$
2e\geq 3f\qquad \Longrightarrow \qquad f\leq 2e/3.
$$

Теперь осталось воспользоваться формулой Эйлера (\ref{eq:Euler_planar}):
$$
2=v+f-e\leq v+2e/3-e=v-e/3\qquad  \Longrightarrow \qquad e\leq 3v-6.
$$

Ясно, что равенство достигается лишь в случае триангуляции плоского графа, в которой сумма всех граней в точности равна $3f$. \qed

\begin{defin}
Плоский граф $\tilde{G}$ называется максимально плоским или просто максимальным, если к нему невозможно добавить ни одного ребра так, чтобы в результате этого добавления вновь получился бы плоский граф.
\end{defin}

Из утверждения \ref{propos:edge_plan_graphs} мы немедленно получаем следующее 

\begin{conseq}
Плоский граф с количеством вершин $n\geq 3$ является максимально плоским тогда и только тогда, когда он представляет собой плоскую триангуляцию $\R_2$. 
\end{conseq}


\mysubitem С помощью формулы Эйлера можно довольно просто доказать, что графы $K_5$ и $K_{3,3}$ не являются планарными. Действительно, граф $K_5$ содержит $\BCf{5}{2}=10$ ребер, тогда как согласно утверждению (\ref{propos:edge_plan_graphs}), планарный граф на $v=5$ вершинах не может содержать более чем $3\cdot 5-6=9$ ребер. 

Для доказательства непланарности графа $K_{3,3}$ с помощью теоремы Эйлера можно, прежде всего, заметить, что $K_{3,3}$ не содержит циклов длины меньшей, чем четыре. Следовательно, в случае, если бы граф $K_{3,3}$ был бы планарным, степень каждой грани во вложении $K_{3,3}$ в $\R_2$ была бы больше или равна четырем. Тогда, согласно (\ref{propos:edge_plan_graphs}), 
$$
4\,|F(K_{3,3})|\leq  \sum_{f\in\tilde{K_{3,3}}}\deg(f)=2|E(\tilde{K_{3,3}})|=18\qquad \Longrightarrow \qquad |F(K_{3,3})|\leq 4 \qquad
\Longrightarrow 
$$ 
$$
\Longrightarrow \qquad |V(K_{3,3})|-|E(K_{3,3})|+|F(K_{3,3})|\leq 6-9+4=1,
$$
что противоречит формуле Эйлера (\ref{eq:Euler_planar}).



\myitem Теорема Куратовского. 


\mysubitem Карта $\M$ называется разделяемой (односвязной), если у нее существует вершина, удаление которой превращает $\M$ в две несвязные компоненты. В противном случае карта $\M$ называется неразделяемой или двусвязной картой. Так, на рисунке изображена разделяемая карта: удаление корневой вершины приводит к появлению вместо $\M$ двух несвязных компонент. 

Удобно в качестве простейшей планарной карты рассматривать так называемую атомную карту $m_0$, состоящую из одной вершины. Такая карта является одновременно простейшей разделяемой картой. 

\mysubitem Как обычно, степенью $\deg(v)$ вершины $v$ называется количество инцидентных ей ребер. Петля дает вклад, равный двум, в степень вершины. Если степени всех вершин равны заданному натуральному числу $r$, то такого рода карты называются $r$-валентными. В частности, карты, все вершины которой имеют четную валентность, называют \emph{эйлеровой} картой. 


Мостом называется ребро, с обеих сторон которого лежит одна и та же грань. Как следует из приведенного выше определения степени грани $f$, любой мост дает в степень $\deg(f)$ вклад, равный двум. Для остальных (так называемых граничных) ребер этот вклад равен единице. 

\myitem Для суммы всех степеней вершин несложно доказать утверждение, аналогичное теореме \ref{theor:first_th_gr}: 
\begin{equation}
\label{eq:sum_deg_faces}
\sum_{f\in\M}\deg(f)=2e(\M).
\end{equation}
Действительно, суммируя степени граней, мы каждое граничное ребро суммируем дважды. Каждый мост, в свою очередь, вносит в степень грани значение, равное двум. Таким образом, суммирование степеней всех граней действительно дает нам удвоенное количество всех ребер данной карты $\M$.  

\mysubitem Сравнение формул (\ref{eq:sum_deg_vertices}) и (\ref{eq:sum_deg_faces}) показывает, в частности, что в планарных графах
$$
\sum_{v\in\M}\deg(v)=\sum_{f\in\M}\deg(f).
$$
Можно сказать, что вершины и грани планарной карты в определенном смысле взаимозаменяемы. Формализовать это понятие взаимозаменяемости можно с помощью так называемой дуальной к $\M$ карты $\M^*$. Строится она следующим образом: мы помещаем в каждую грань карты $\M$ по вершине (помеченной на рис. белым цветом), которые и будут вершинами дуальной карты $\M^*$. Затем для каждого ребра $e$, инцидентного граням $f_1$ и $f_2$, мы проводим ребро $e^*$, которое пересекает $e$ и соединяет вершины $\M^*$, соответствующие граням $f_1$ и $f_2$. В результате мы получаем карту $\M^*$, вершины которой отвечают граням, а грани --- вершинам исходной карты $\M$. Корневым ребром в $\M^*$ выбирается ребро, пересекающее корневое ребро исходной карты $M$. 

Заметим, что дуальная к разделяемой карте также является разделяемой. 

\mysubitem Дуальная к $r$-валентной карте $\M$ карта $\M^*$ называется $r$-ангуляцией; у такой карты степень любой грани равна, очевидно, $r$. В частности, в случае $r=3$ имеем так называемую триангуляцию, а в случае $r=4$ --- квадрангуляцию сферы (плоскости). $r$-ангуляцию, в которой запрещены петли, называют беспетлевой (loopless) $r$-ангуляцией, а $r$-ангуляцию, в которой запрещены как петли, так и мультиребра --- простой (simple) $r$-ангуляцией. 

\mysubitem Опишем еще один чрезвычайно полезный изоморфизм, позволяющий каждой планарной карте $\M$ поставить в соответствие некоторую квадрангуляцию $Q_{\M}$. Для этого, как и при построении дуального к $\M$ графа $\M^*$, добавим в центр каждой грани по вершине, окрашенной в белый цвет, и соединим каждую такую вершину пунктирными ребрами с вершинами исходной карты $\M$, инцидентными данной грани. В результате получим некоторую триангуляцию, у которой вершины покрашены в два чередующихся друг с другом цвета. Оставляя в построенной карте лишь пунктирные ребра, мы и получаем соответствующую $\M$ квадрангуляцию $Q_{\M}$. 

\mysubitem Очевидно, что дуальная к $Q_{\M}$ карта представляет собой четырехвалентную карту $Q^*_{\M}$. Такую карту можно легко построить и непосредственно из исходной карты $\M$. Для этого поместим на середине каждого ребра карты $\M$ новую вершину (эти вершины помечены звездочками на рис.). Будем теперь обходить каждую грань исходного графа вдоль ее границы и соединять ребрами (пунктирные линии на рис.) соседние вершины, помеченные звездочками. Очевидно, что любая такая вершина имеет ровно четырех соседей: у каждой такой вершины существует левая и правая соседняя вершины с каждой из двух сторон отвечающей этой вершине ребра. Как следствие, степень каждой такой вершины равна четырем. Оставляя в построенной карте лишь вершины, помеченные звездочкой, а также соединяющие их пунктирные ребра, мы и получаем некоторую четырехвалентную карту  $Q^*_{\M}$. Можно убедиться, что двойственная к ней карта действительно есть построенная нами ранее квадрангуляция $Q_{\M}$.

\myitem Раскраски планарных графов. 

\myitem Алгоритмы проверки графа на планарность - написать, но отсюда потом убрать. Они основаны на разбиении графа на блоки?

\myitem Вложения графов в многообразия. Crossing number?

\myitem Изоморфизм плоских графов с топологической точки зрения. Класс эквивалентности --- планарная карта. Перечислять имеет смысл, естественно, лишь классы эквивалентности. Перечислению планарных карт посвящен последний параграф следующей главы. 


\section*{Упражнения}

\begin{exerc} \label{exerc:K_3_3_nonplanar}
С помощью теоремы Жордана доказать непланарность графа $K_{3,3}$.
\end{exerc}

\begin{exerc}
Доказать, что в случае плоского графа, имеющего ровно $k$ односвязных компонент, формула Эйлера принимает вид
$$
v-e+f=k+1.
$$
\end{exerc}

\begin{exerc} Доказать, что в случае триангуляции сферы количество ребер $e(\M)$ и количество граней $f(\M)$ связаны следующим соотношением:
\begin{equation}
\label{connect_e_f_triang}
2e(\M)=3f(\M).
\end{equation}
Показать, что следствием данного равенства является тот факт, что любая триангуляция с $n+2$-мя вершинами имеет $2n$ граней и $3n$ ребер. Такого рода триангуляция называется триангуляцией размера $n$. 

\end{exerc}


\section*{Решение упражнений}

\begin{sol_exerc}  
\end{sol_exerc}

\begin{sol_exerc} В случае триангуляции степень любой грани равна трем. Как следствие, 
$$
\sum_{f\in\M}\deg(f)=3f(\M),
$$
то есть утроенному количеству граней триангуляции $\M$. Теперь для доказательства (\ref{connect_e_f_triang}) достаточно воспользоваться равенством (\ref{eq:sum_deg_faces}).

Пусть теперь количество вершин равно $v(\M)=n+2$. Тогда, согласно соотношению Эйлера (\ref{eq:Euler_planar}) и равенству (\ref{connect_e_f_triang}), имеем
$$
n+2+f(\M)=2+e(\M)=2+\dfrac{3}{2}f(\M)\qquad \Longrightarrow \qquad f(\M)=2n \qquad \Longrightarrow \qquad e(\M)=3n.
$$

\end{sol_exerc} 


\section*{Дополнение --- доказательство теоремы Вагнера.}

\myitem При изучении планарных графов чрезвычайно важную роль играют подграфы, называемые \emph{мостами.} Дадим определение таких подграфов и исследуем их основные свойства.

\mysubitem Пусть $H$ есть некоторый подграф связного графа $G$ (см.рис.). Рассмотрим множество $E(G)-E(H)$ ребер, принадлежащих графу $G$ и не входящих в граф $H$. Среди этих ребер могут быть как одиночные ребра, концевые вершины которых принадлежат $H$ (ребра ... и ... на рис.), так и связные компоненты графа $G-H$. Любой такой объект вместе со своими концевыми вершинами, принадлежащими $H$, и называется $H$-мостом графа $G$. При этом общие для подграфа $H$ и его $H$-моста вершины называются вершинами привязки моста к подграфу $H$, а оставшиеся вершины блока --- внутренними вершинами. Мост, содержащий $k$ вершин привязки к $H$, называется $k$-мостом. Мост, не содержащий внутренних вершин, называется тривиальным. 

\begin{examp}
На рисунке ... в качестве подграфа $H$ выбран цикл $1,\ldots,10$. Этот граф содержит шесть $H$-мостов, два из которых представляют собой отдельные ребра с вершинами, лежащими в $H$ (тривиальные мосты $B_1$ и $B_2$), а четыре --- отдельные компоненты связности. Вершины ... графа $G$ являются вершинами привязки мостов $B_i$ к подграфу $H$.
\end{examp}

Заметим, что из определения моста следует, что $B$ является связным графом, а следовательно, любые две его вершины могут быть соединены путем, внутренние вершины которого не принадлежат $H$. Ясно также, что любые два моста не имеют общих вершин за исключением, возможно, вершин, принадлежащих $H$.

Далее, в связном графе каждый мост имеет хотя бы одну вершину привязки к $H$, а в двусвязном графе (либо же в блоке односвязного графа) любой мост имеет по меньшей мере две вершины привязки к $H$. 

\mysubitem Далее в качестве подграфа $H$ у нас будет выступать некоторый цикл $C$. В данном частном случае говорят, что два моста перекрывают друг друга, если либо они имеют три общие вершины привязки , либо $C$ содержит четыре циклически упорядоченные вершины $a,b,c,d,$ такие, что $a$ и $c$ являются вершинами привязки одного моста, а $b$ и $d$ --- вершинами привязки второго моста. Про первый случай обычно говорят, что соответствующие мосты эквивалентны друг другу, а про второй --- что мосты смещены друг относительно друга.

На рис. мосты $B_1$ и $B_3$ эквивалентны друг другу, а мосты $B_3$ и $B_4$ смещены друг относительно друга.

При рассмотрении эквивалентных мостов нам понадобится следующая

\begin{lemm}\label{lemm:three_equiv_vert}
Пусть мост $B$ имеет три вершины $a,b,c$ привязки к циклу $C$. Тогда существует внутренняя для $B$ вершина $d$ и пути $P_a,P_b,P_c$ в $B$, соединяющие вершины $a,b,c$ с $d$ и не имеющие друг с другом никаких других общих вершин помимо $d$.
\end{lemm}

\evidp Рассмотрим произвольный путь $P$ в $B$, соединяющий вершины $a$ и $b$, и не имеющий других общих с $C$ вершин. Ясно, что он должен содержать хотя бы одну внутреннюю вершину $v$ --- в противном случае $B$ был бы тривиальным и не мог бы содержать еще одну вершину $c$. 

Пусть теперь $Q$ есть путь в $B$, соединяющий $c$ с $v$ и не имеющий никаких других общих с $C$ вершин, помимо $c$. Обозначим через $d$ первую вершину этого пути, принадлежащую $P$. Понятно тогда, что участки $ad$, $bd$ пути $P$, а также участок $cd$ пути $Q$ и представляют собой искомые пути $P_a,P_b,P_c$. \qed

\mysubitem Перейдем теперь к рассмотрению мостов в плоских графах. Пусть $C$ есть цикл в плоском графе $\tilde{G}$. Тогда любой $C$-мост лежит внутри $(B\in\Int(C))$ или снаружи $(B\in\Ext(C))$ данного цикла и называется внутренним либо внешним мостом соответственно. 

\begin{lemm}
Внутренние мосты не перекрывают друг друга. 
\end{lemm}

\evidp Покажем вначале, что два внутренних моста $B_1$ и $B_2$ не могут быть смещены друг относительно друга. Предположим противное, а именно, предположим, что существуют циклически упорядоченные вершины $a,b,c,d$, такие, что $a,c\in B_1$, $b,d\in B_2$, и что эти вершины являются вершинами привязки соответствующих графов. Как уже было отмечено выше, в графе $G$ существуют пути $aP_1c$ и $bP_2d$, внутренние вершины которых не принадлежат $C$. Так как они принадлежат разным мостам, то они, кроме того, не содержат общих вершин. 

Рассмотрим теперь подграф $H$ графа $\tilde{G}$, представляющий собой объединение $C$, $P_1$ и $P_2$. Так как граф $\tilde{G}$ плоский, то плоским должен быть и граф $H$. Добавим теперь к $H$ вершину, лежащую в $\Ext(C)$, и соединим ее с каждой из вершин $a,b,c,d$ графа $H$. В результате получим граф, являющийся подразбиением графа $K_5$, чего быть не может.

Теперь предположим, что мосты $B_1$ и $B_2$ эквивалентны, то есть содержат три общие вершины привязки $a,b,c$. Обозначим через $d_1$ и $d_2$ внутренние для каждого из мостов $B_1,B_2$ вершины, описанные в лемме \ref{lemm:three_equiv_vert}, а через $F_1$ и $F_2$ --- подграфы $\tilde{G}$, состоящие из описанных в лемме путей из $a,b,c$ в $d_1$ и $d_2$. Так как исходный граф $\tilde{G}$ плоский, то плоским является и подграф $H$, полученный объединением подграфов $F_1$ и $F_2$. Как и в первом случае, добавление к $H$ внешней вершины приводит нас к графу, являющемуся подразбиением графа $K_{3,3}$, чего быть не может. \qed

\mysubitem Приведем, наконец, алгоритм проверки графа на планарность, использующий понятие моста. Впервые этот алгоритм появился в работе Demoucron, Malgrange and Pertuiset (1964). 

\begin{defin}
Пусть $H$ есть планарный подграф графа $G$ и пусть $\tilde{H}$ есть некоторое вложение графа $H$ в плоскость. Граф $\tilde{H}$ называется $G$-допустимым, если $G$ есть планарный граф, и, кроме того, существует вложение $\tilde{G}$ графа $G$ в плоскость, такое, что $\tilde{H}\subset \tilde{G}$.  
\end{defin}

В качестве примера на рис. приведено два вложения одного и того же подграфа $H$ графа $G$ в плоскость, одно из которых является $G$-допустимым, а другое --- нет. 

\begin{defin}
Говорят, что $H$-мост $B$ графа $G$ можно врисовать в грань $f$, если все вершины привязки $B$ лежат на границе грани $f$. 
\end{defin}

Обозначим через $F(B,\tilde{H})$ множество граней $\tilde{H}$, в которые мы можем вписать мост $B$. Следующая вполне очевидная теорема дает нам необходимое условие планарности графа $G$.

\begin{theor}
Если $\tilde{H}$ является $G$-допустимым, то для любого $H$-моста $B$ множество $F(B,\tilde{H})$ не пусто.
\end{theor}

\evidp Так как $\tilde{H}$ является $G$-допустимым, то существует вложение $\tilde{G}$ графа $G$ в плоскость, такое, что  $\tilde{H}\subset \tilde{G}$. Но тогда любой $H$-мост $B$ графа $\tilde{G}$ обязан лежать в одной из граней графа $\tilde{H}$. Следовательно, множество $F(B,\tilde{H})$ не пусто. \qed

Приступим теперь к описанию алгоритма проверки простого связного графа $G$ на планарность. Прежде всего заметим, что так как любой двусвязный блок планарного графа планарен, то достаточно рассматривать лишь двусвязные графы. Рассмотрим в таком графе произвольный цикл $G_1$, вложение $\tilde{G}_1$ которого в плоскость легко построить. Для этого, например, достаточно в качестве $G_1$ выбрать в $G$ простой цикл. Найдем все $G_1$-мосты графа $G$ и определим для каждого из них множество $F(B,\tilde{G}_1)$. Если хотя бы для одного моста соответствующее ему множество $F(B,\tilde{G}_1)$ оказалось пустым, проверка заканчивается --- согласно доказанной выше теореме, граф $G$ не планарен. В противном случае выбираем произвольный мост $B$ и грань $f$ плоского графа $\tilde{G}_1$, такую, что $f\in F(B,\tilde{G}_1)$. В графе $G$ находим путь $P_1$, связывающий в $B$ любые две вершины привязки $B$ к циклу $G_1$, полагаем в качестве нового цикла $G_2=G_1\cup P_1$ и, рисуя путь $P_1$ внутри грани $f$ подграфа $\tilde{G}_1$, получаем вложение $\tilde{G}_2$ в плоскость. Затем процесс повторяем.

Перед запуском алгоритма обычно проверяется, что $G$ имеет не более $3n-6$ ребер. Затем создается список границ граней $f$. West утверждает, что остальные операции делаются за линейное время. В результате время работы всего алгоритма квадратичное.

\begin{theor}
Описанный выше алгоритм строит плоское вложение $G$ в случае, если $G$ планарен.
\end{theor}

\evidp 

\myitem Далее нужно изложить первое короткое доказательство теоремы Куратовского, изложенного у Bondy and Murty в их старой книге. Согласно West, это доказательство появилось в работе Dirac and Schuster (1954), и вошло, помимо уже упомянутой книге, в книгу Харари (1969), Chartrand and Lesniak (1986) и самого West (который вместо мостов использует термин $H$-фрагмент). 

\myitem Далее нужно изложить доказательство Thomassen (1980) теоремы Куратовского. Понять, его ли излагают Bondy and Murty в их новой книжке. Это же доказательство изложено у Gross с обоснованием, почему именно это доказательство хорошо и с многочисленными следствиями из этого доказательства. Там же приведен алгоритм на его основе, работающий за $O(n^4)$. 

\myitem Новый алгоритм Bondy and Murty (см. их новую книгу). Этот алгоритм основан на доказательстве теоремы Вагнера. 

\myitem Есть еще доказательство Макарычева, которое он получил, будучи еще школьником. Опубликовано оно в 1997 году. Его излагает Карпов и в популярной форме --- Скопенков. На его основе также можно придумать алгоритм проверки планарности.

\myitem Линейный алгоритм Hopcroft and Tarjan (1974), который, согласно West, более-менее хорошо изложен в Gould (1988).

\myitem Линейный алгоритм Booth and Lueker (1976), который изложен в параграфе 3.2 книги Nishizeki and Chiba. Этот алгоритм называется vertex addition algorithm, и появился он вначале в работе Lempel, Even and Cederbaum (1967). Booth and Lueker улучшили его и сделали линейным. Его же излагают Mohar and Thomassen. 

\myitem Наконец, Chiba et al. (1985) предложили простой линейный алгоритм, который описан в параграфе 3.3 книги Nishizeki and Chiba. 

\myitem Filotti et al. (1979) --- полиномиальный алгоритм для проверки того, можно ли данный граф вложить в поверхность рода  $g$. 









\newpage

\bibliography{Ref_book}

\end{document}